early-access version 1528
This commit is contained in:
parent
b014f1be99
commit
51aaeca986
5 changed files with 28 additions and 3 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 1526.
|
This is the source code for early-access 1528.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -306,13 +306,18 @@ void ARM_Dynarmic_32::ClearExclusiveState() {
|
||||||
|
|
||||||
void ARM_Dynarmic_32::PageTableChanged(Common::PageTable& page_table,
|
void ARM_Dynarmic_32::PageTableChanged(Common::PageTable& page_table,
|
||||||
std::size_t new_address_space_size_in_bits) {
|
std::size_t new_address_space_size_in_bits) {
|
||||||
|
ThreadContext32 ctx{};
|
||||||
|
SaveContext(ctx);
|
||||||
|
|
||||||
auto key = std::make_pair(&page_table, new_address_space_size_in_bits);
|
auto key = std::make_pair(&page_table, new_address_space_size_in_bits);
|
||||||
auto iter = jit_cache.find(key);
|
auto iter = jit_cache.find(key);
|
||||||
if (iter != jit_cache.end()) {
|
if (iter != jit_cache.end()) {
|
||||||
jit = iter->second;
|
jit = iter->second;
|
||||||
|
LoadContext(ctx);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
jit = MakeJit(page_table, new_address_space_size_in_bits);
|
jit = MakeJit(page_table, new_address_space_size_in_bits);
|
||||||
|
LoadContext(ctx);
|
||||||
jit_cache.emplace(key, jit);
|
jit_cache.emplace(key, jit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -348,13 +348,18 @@ void ARM_Dynarmic_64::ClearExclusiveState() {
|
||||||
|
|
||||||
void ARM_Dynarmic_64::PageTableChanged(Common::PageTable& page_table,
|
void ARM_Dynarmic_64::PageTableChanged(Common::PageTable& page_table,
|
||||||
std::size_t new_address_space_size_in_bits) {
|
std::size_t new_address_space_size_in_bits) {
|
||||||
|
ThreadContext64 ctx{};
|
||||||
|
SaveContext(ctx);
|
||||||
|
|
||||||
auto key = std::make_pair(&page_table, new_address_space_size_in_bits);
|
auto key = std::make_pair(&page_table, new_address_space_size_in_bits);
|
||||||
auto iter = jit_cache.find(key);
|
auto iter = jit_cache.find(key);
|
||||||
if (iter != jit_cache.end()) {
|
if (iter != jit_cache.end()) {
|
||||||
jit = iter->second;
|
jit = iter->second;
|
||||||
|
LoadContext(ctx);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
jit = MakeJit(page_table, new_address_space_size_in_bits);
|
jit = MakeJit(page_table, new_address_space_size_in_bits);
|
||||||
|
LoadContext(ctx);
|
||||||
jit_cache.emplace(key, jit);
|
jit_cache.emplace(key, jit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -210,6 +210,12 @@ Device::Device() {
|
||||||
const bool is_amd = vendor == "ATI Technologies Inc.";
|
const bool is_amd = vendor == "ATI Technologies Inc.";
|
||||||
const bool is_intel = vendor == "Intel";
|
const bool is_intel = vendor == "Intel";
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
const bool is_linux = true;
|
||||||
|
#else
|
||||||
|
const bool is_linux = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
bool disable_fast_buffer_sub_data = false;
|
bool disable_fast_buffer_sub_data = false;
|
||||||
if (is_nvidia && version == "4.6.0 NVIDIA 443.24") {
|
if (is_nvidia && version == "4.6.0 NVIDIA 443.24") {
|
||||||
LOG_WARNING(
|
LOG_WARNING(
|
||||||
|
@ -249,7 +255,9 @@ Device::Device() {
|
||||||
GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 &&
|
GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 &&
|
||||||
GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2;
|
GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2;
|
||||||
|
|
||||||
use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue();
|
// Blocks AMD and Intel OpenGL drivers on Windows from using asynchronous shader compilation.
|
||||||
|
use_asynchronous_shaders = Settings::values.use_asynchronous_shaders.GetValue() &&
|
||||||
|
!(is_amd || (is_intel && !is_linux));
|
||||||
use_driver_cache = is_nvidia;
|
use_driver_cache = is_nvidia;
|
||||||
|
|
||||||
LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi);
|
LOG_INFO(Render_OpenGL, "Renderer_VariableAOFFI: {}", has_variable_aoffi);
|
||||||
|
@ -261,6 +269,10 @@ Device::Device() {
|
||||||
if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) {
|
if (Settings::values.use_assembly_shaders.GetValue() && !use_assembly_shaders) {
|
||||||
LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported");
|
LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Settings::values.use_asynchronous_shaders.GetValue() && !use_asynchronous_shaders) {
|
||||||
|
LOG_WARNING(Render_OpenGL, "Asynchronous shader compilation enabled but not supported");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Device::Device(std::nullptr_t) {
|
Device::Device(std::nullptr_t) {
|
||||||
|
|
|
@ -103,7 +103,10 @@ void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit)
|
||||||
str = QFileDialog::getOpenFileName(this, caption, QFileInfo(edit->text()).dir().path(),
|
str = QFileDialog::getOpenFileName(this, caption, QFileInfo(edit->text()).dir().path(),
|
||||||
QStringLiteral("NX Gamecard;*.xci"));
|
QStringLiteral("NX Gamecard;*.xci"));
|
||||||
} else {
|
} else {
|
||||||
str = QFileDialog::getExistingDirectory(this, caption, edit->text()) + QDir::separator();
|
str = QFileDialog::getExistingDirectory(this, caption, edit->text());
|
||||||
|
if (!str.isNull() && str.back() != QDir::separator()) {
|
||||||
|
str.append(QDir::separator());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str.isEmpty())
|
if (str.isEmpty())
|
||||||
|
|
Loading…
Reference in a new issue