early-access version 1528

This commit is contained in:
pineappleEA 2021-03-22 06:10:40 +01:00
parent b014f1be99
commit 51aaeca986
5 changed files with 28 additions and 3 deletions

View file

@ -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

View file

@ -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);
} }

View file

@ -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);
} }

View file

@ -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) {

View file

@ -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())