early-access version 1317
This commit is contained in:
parent
99d3d1fc85
commit
4b3a0ea310
7 changed files with 36 additions and 74 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 1316.
|
This is the source code for early-access 1317.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -1,40 +1,17 @@
|
||||||
diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake
|
|
||||||
--- a/CMakeModules/GenerateSCMRev.cmake
|
|
||||||
+++ b/CMakeModules/GenerateSCMRev.cmake
|
|
||||||
@@ -11,10 +11,10 @@
|
|
||||||
|
|
||||||
# generate git/build information
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
include(GetGitRevisionDescription)
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
-get_git_head_revision(GIT_REF_SPEC GIT_REV)
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
-git_describe(GIT_DESC --always --long --dirty)
|
<html>
|
||||||
-git_branch_name(GIT_BRANCH)
|
<head>
|
||||||
-get_timestamp(BUILD_DATE)
|
<title>503 Backend is unhealthy</title>
|
||||||
+#get_git_head_revision(GIT_REF_SPEC GIT_REV)
|
</head>
|
||||||
+#git_describe(GIT_DESC --always --long --dirty)
|
<body>
|
||||||
+#git_branch_name(GIT_BRANCH)
|
<h1>Error 503 Backend is unhealthy</h1>
|
||||||
+#get_timestamp(BUILD_DATE)
|
<p>Backend is unhealthy</p>
|
||||||
|
<h3>Guru Mediation:</h3>
|
||||||
# Generate cpp with Git revision from template
|
<p>Details: cache-fra19153-FRA 1610670438 2624000569</p>
|
||||||
# Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well
|
<hr>
|
||||||
@@ -113,4 +113,5 @@
|
<p>Varnish cache server</p>
|
||||||
set(COMBINED "${COMBINED}${TMP}")
|
</body>
|
||||||
endforeach()
|
</html>
|
||||||
string(MD5 SHADER_CACHE_VERSION "${COMBINED}")
|
|
||||||
+set(BUILD_FULLNAME "${BUILD_FULLNAME} ")
|
|
||||||
configure_file("${SRC_DIR}/src/common/scm_rev.cpp.in" "scm_rev.cpp" @ONLY)
|
|
||||||
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
|
|
||||||
--- a/src/common/CMakeLists.txt
|
|
||||||
+++ b/src/common/CMakeLists.txt
|
|
||||||
@@ -28,6 +28,12 @@
|
|
||||||
-DBUILD_TAG="${BUILD_TAG}"
|
|
||||||
-DBUILD_ID="${DISPLAY_VERSION}"
|
|
||||||
-DGIT_EXECUTABLE="${GIT_EXECUTABLE}"
|
|
||||||
+ -DGIT_REF_SPEC="${GIT_REF_SPEC}"
|
|
||||||
+ -DGIT_REV="${GIT_REV}"
|
|
||||||
+ -DGIT_DESC="${GIT_DESC}"
|
|
||||||
+ -DGIT_BRANCH="${GIT_BRANCH}"
|
|
||||||
+ -DBUILD_FULLNAME="${BUILD_FULLNAME}"
|
|
||||||
+ -DBUILD_DATE="${BUILD_DATE}"
|
|
||||||
-P "${CMAKE_SOURCE_DIR}/CMakeModules/GenerateSCMRev.cmake"
|
|
||||||
DEPENDS
|
|
||||||
# WARNING! It was too much work to try and make a common location for this list,
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ add_executable(tests
|
||||||
common/ring_buffer.cpp
|
common/ring_buffer.cpp
|
||||||
core/core_timing.cpp
|
core/core_timing.cpp
|
||||||
tests.cpp
|
tests.cpp
|
||||||
|
video_core/buffer_base.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
create_target_directory_groups(tests)
|
create_target_directory_groups(tests)
|
||||||
|
|
|
@ -42,8 +42,8 @@ public:
|
||||||
return it == page_table.end() ? 0 : it->second;
|
return it == page_table.end() ? 0 : it->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
[[nodiscard]] int Count() const noexcept {
|
[[nodiscard]] unsigned Count() const noexcept {
|
||||||
int count = 0;
|
unsigned count = 0;
|
||||||
for (const auto [index, value] : page_table) {
|
for (const auto [index, value] : page_table) {
|
||||||
count += value;
|
count += value;
|
||||||
}
|
}
|
||||||
|
@ -120,11 +120,11 @@ TEST_CASE("BufferBase: Basic range", "[video_core]") {
|
||||||
buffer.MarkRegionAsCpuModified(c, PAGE);
|
buffer.MarkRegionAsCpuModified(c, PAGE);
|
||||||
int num = 0;
|
int num = 0;
|
||||||
buffer.ForEachUploadRange(c, WORD, [&](u64 offset, u64 size) {
|
buffer.ForEachUploadRange(c, WORD, [&](u64 offset, u64 size) {
|
||||||
REQUIRE(offset == 0);
|
REQUIRE(offset == 0U);
|
||||||
REQUIRE(size == PAGE);
|
REQUIRE(size == PAGE);
|
||||||
++num;
|
++num;
|
||||||
});
|
});
|
||||||
REQUIRE(num == 1);
|
REQUIRE(num == 1U);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("BufferBase: Border upload", "[video_core]") {
|
TEST_CASE("BufferBase: Border upload", "[video_core]") {
|
||||||
|
@ -183,7 +183,7 @@ TEST_CASE("BufferBase: Partial word uploads", "[video_core]") {
|
||||||
BufferBase buffer(rasterizer, c, 0x9d000);
|
BufferBase buffer(rasterizer, c, 0x9d000);
|
||||||
int num = 0;
|
int num = 0;
|
||||||
buffer.ForEachUploadRange(c, WORD, [&](u64 offset, u64 size) {
|
buffer.ForEachUploadRange(c, WORD, [&](u64 offset, u64 size) {
|
||||||
REQUIRE(offset == 0);
|
REQUIRE(offset == 0U);
|
||||||
REQUIRE(size == WORD);
|
REQUIRE(size == WORD);
|
||||||
++num;
|
++num;
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
add_subdirectory(host_shaders)
|
add_subdirectory(host_shaders)
|
||||||
|
|
||||||
add_library(video_core STATIC
|
add_library(video_core STATIC
|
||||||
|
buffer_cache/buffer_base.h
|
||||||
buffer_cache/buffer_block.h
|
buffer_cache/buffer_block.h
|
||||||
buffer_cache/buffer_cache.h
|
buffer_cache/buffer_cache.h
|
||||||
buffer_cache/map_interval.cpp
|
buffer_cache/map_interval.cpp
|
||||||
|
|
|
@ -117,31 +117,13 @@ void ConfigureDialog::UpdateVisibleTabs() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::map<QWidget*, QString> widgets = {
|
|
||||||
{ui->generalTab, tr("General")},
|
|
||||||
{ui->systemTab, tr("System")},
|
|
||||||
{ui->profileManagerTab, tr("Profiles")},
|
|
||||||
{ui->inputTab, tr("Controls")},
|
|
||||||
{ui->hotkeysTab, tr("Hotkeys")},
|
|
||||||
{ui->cpuTab, tr("CPU")},
|
|
||||||
{ui->cpuDebugTab, tr("Debug")},
|
|
||||||
{ui->graphicsTab, tr("Graphics")},
|
|
||||||
{ui->graphicsAdvancedTab, tr("Advanced")},
|
|
||||||
{ui->audioTab, tr("Audio")},
|
|
||||||
{ui->debugTab, tr("Debug")},
|
|
||||||
{ui->webTab, tr("Web")},
|
|
||||||
{ui->uiTab, tr("UI")},
|
|
||||||
{ui->filesystemTab, tr("Filesystem")},
|
|
||||||
{ui->serviceTab, tr("Services")},
|
|
||||||
};
|
|
||||||
|
|
||||||
[[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget);
|
[[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget);
|
||||||
|
|
||||||
ui->tabWidget->clear();
|
ui->tabWidget->clear();
|
||||||
|
|
||||||
const QList<QWidget*> tabs = qvariant_cast<QList<QWidget*>>(items[0]->data(Qt::UserRole));
|
const auto tabs = qvariant_cast<QList<QWidget*>>(items[0]->data(Qt::UserRole));
|
||||||
|
|
||||||
for (const auto tab : tabs) {
|
for (auto* const tab : tabs) {
|
||||||
ui->tabWidget->addTab(tab, tab->accessibleName());
|
ui->tabWidget->addTab(tab, tab->accessibleName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,15 @@
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include <QCloseEvent>
|
#include <QCloseEvent>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QRegularExpression>
|
||||||
#include <QStringListModel>
|
#include <QStringListModel>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "core/settings.h"
|
#include "core/settings.h"
|
||||||
#include "input_common/main.h"
|
#include "input_common/main.h"
|
||||||
|
@ -101,7 +104,6 @@ ConfigureMotionTouch::~ConfigureMotionTouch() = default;
|
||||||
void ConfigureMotionTouch::SetConfiguration() {
|
void ConfigureMotionTouch::SetConfiguration() {
|
||||||
const Common::ParamPackage motion_param(Settings::values.motion_device);
|
const Common::ParamPackage motion_param(Settings::values.motion_device);
|
||||||
const Common::ParamPackage touch_param(Settings::values.touch_device);
|
const Common::ParamPackage touch_param(Settings::values.touch_device);
|
||||||
const std::string motion_engine = motion_param.Get("engine", "motion_emu");
|
|
||||||
|
|
||||||
ui->touch_from_button_checkbox->setChecked(Settings::values.use_touch_from_button);
|
ui->touch_from_button_checkbox->setChecked(Settings::values.use_touch_from_button);
|
||||||
touch_from_button_maps = Settings::values.touch_from_button_maps;
|
touch_from_button_maps = Settings::values.touch_from_button_maps;
|
||||||
|
@ -166,14 +168,14 @@ void ConfigureMotionTouch::ConnectEvents() {
|
||||||
|
|
||||||
void ConfigureMotionTouch::OnUDPAddServer() {
|
void ConfigureMotionTouch::OnUDPAddServer() {
|
||||||
// Validator for IP address
|
// Validator for IP address
|
||||||
QRegExp re(QStringLiteral(
|
const QRegularExpression re(QStringLiteral(
|
||||||
R"re(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)re"));
|
R"re(^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)re"));
|
||||||
bool ok;
|
bool ok;
|
||||||
QString port_text = ui->udp_port->text();
|
const QString port_text = ui->udp_port->text();
|
||||||
QString server_text = ui->udp_server->text();
|
const QString server_text = ui->udp_server->text();
|
||||||
const QString server_string = tr("%1:%2").arg(server_text, port_text);
|
const QString server_string = tr("%1:%2").arg(server_text, port_text);
|
||||||
int port_number = port_text.toInt(&ok, 10);
|
const int port_number = port_text.toInt(&ok, 10);
|
||||||
int row = udp_server_list_model->rowCount();
|
const int row = udp_server_list_model->rowCount();
|
||||||
|
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
QMessageBox::warning(this, tr("yuzu"), tr("Port number has invalid characters"));
|
QMessageBox::warning(this, tr("yuzu"), tr("Port number has invalid characters"));
|
||||||
|
@ -183,7 +185,7 @@ void ConfigureMotionTouch::OnUDPAddServer() {
|
||||||
QMessageBox::warning(this, tr("yuzu"), tr("Port has to be in range 0 and 65353"));
|
QMessageBox::warning(this, tr("yuzu"), tr("Port has to be in range 0 and 65353"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!re.exactMatch(server_text)) {
|
if (!re.match(server_text).hasMatch()) {
|
||||||
QMessageBox::warning(this, tr("yuzu"), tr("IP address is not valid"));
|
QMessageBox::warning(this, tr("yuzu"), tr("IP address is not valid"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -306,7 +308,6 @@ void ConfigureMotionTouch::ApplyConfiguration() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Common::ParamPackage touch_param{};
|
Common::ParamPackage touch_param{};
|
||||||
|
|
||||||
touch_param.Set("min_x", min_x);
|
touch_param.Set("min_x", min_x);
|
||||||
touch_param.Set("min_y", min_y);
|
touch_param.Set("min_y", min_y);
|
||||||
touch_param.Set("max_x", max_x);
|
touch_param.Set("max_x", max_x);
|
||||||
|
|
Loading…
Reference in a new issue