rsx/ui: Make a few settings configurable via the GUI

This commit is contained in:
kd-11 2017-06-19 02:00:32 +03:00
parent b2e906f4cc
commit 798f90dac2
8 changed files with 26 additions and 3 deletions

View file

@ -944,7 +944,9 @@ void GLGSRender::flip(int buffer)
}
m_rtts.invalidated_resources.clear();
m_rtts.invalidate_surface_cache_data(nullptr);
if (g_cfg.video.invalidate_surface_cache_every_frame)
m_rtts.invalidate_surface_cache_data(nullptr);
}

View file

@ -1137,6 +1137,7 @@ namespace gl
uint_10_10_10_2 = GL_UNSIGNED_INT_10_10_10_2,
uint_2_10_10_10_rev = GL_UNSIGNED_INT_2_10_10_10_REV,
uint_24_8 = GL_UNSIGNED_INT_24_8,
float32z_s8int = GL_DEPTH32F_STENCIL8,
sbyte = GL_BYTE,
sshort = GL_SHORT,
@ -1189,6 +1190,7 @@ namespace gl
depth16 = GL_DEPTH_COMPONENT16,
depth_stencil = GL_DEPTH_STENCIL,
depth24_stencil8 = GL_DEPTH24_STENCIL8,
depth32f_stencil8 = GL_DEPTH32F_STENCIL8,
compressed_rgb_s3tc_dxt1 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
compressed_rgba_s3tc_dxt1 = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,

View file

@ -57,7 +57,10 @@ depth_format rsx::internals::surface_depth_format_to_gl(rsx::surface_depth_forma
default:
LOG_ERROR(RSX, "Surface depth buffer: Unsupported surface depth format (0x%x)", (u32)depth_format);
case rsx::surface_depth_format::z24s8:
return{ ::gl::texture::type::uint_24_8, ::gl::texture::format::depth_stencil, ::gl::texture::internal_format::depth24_stencil8 };
if (g_cfg.video.force_high_precision_z_buffer)
return{ ::gl::texture::type::float32z_s8int, ::gl::texture::format::depth_stencil, ::gl::texture::internal_format::depth32f_stencil8 };
else
return{ ::gl::texture::type::uint_24_8, ::gl::texture::format::depth_stencil, ::gl::texture::internal_format::depth24_stencil8 };
}
}

View file

@ -21,6 +21,10 @@ gpu_formats_support get_optimal_tiling_supported_formats(VkPhysicalDevice physic
&& !!(props.optimalTilingFeatures & VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)
&& !!(props.optimalTilingFeatures & VK_FORMAT_FEATURE_BLIT_SRC_BIT);
//Hide d24_s8 if force high precision z buffer is enabled
if (g_cfg.video.force_high_precision_z_buffer && result.d32_sfloat_s8)
result.d24_unorm_s8 = false;
return result;
}

View file

@ -1273,9 +1273,11 @@ void VKGSRender::process_swap_request()
//m_texture_cache.merge_dirty_textures(m_rtts.invalidated_resources);
m_rtts.invalidated_resources.clear();
m_rtts.invalidate_surface_cache_data(&*m_current_command_buffer);
m_texture_cache.flush();
if (g_cfg.video.invalidate_surface_cache_every_frame)
m_rtts.invalidate_surface_cache_data(&*m_current_command_buffer);
m_buffer_view_to_clean.clear();
m_sampler_to_clean.clear();
m_framebuffer_to_clean.clear();

View file

@ -309,6 +309,8 @@ struct cfg_root : cfg::node
cfg::_bool overlay{this, "Debug overlay"};
cfg::_bool gl_legacy_buffers{this, "Use Legacy OpenGL Buffers (Debug)"};
cfg::_bool use_gpu_texture_scaling{this, "Use GPU texture scaling", true};
cfg::_bool force_high_precision_z_buffer{this, "Force High Precision Z buffer"};
cfg::_bool invalidate_surface_cache_every_frame{this, "Invalidate Cache Every Frame", true};
struct node_d3d12 : cfg::node
{

View file

@ -63,6 +63,8 @@ public:
GPUTextureScaling,
D3D12Adapter,
VulkanAdapter,
ForceHighpZ,
AutoInvalidateCache,
// Audio
AudioRenderer,
@ -150,6 +152,8 @@ private:
{ DebugOverlay, { "Video", "Debug overlay"}},
{ LegacyBuffers, { "Video", "Use Legacy OpenGL Buffers (Debug)"}},
{ GPUTextureScaling,{ "Video", "Use GPU texture scaling"}},
{ ForceHighpZ, { "Video", "Force High Precision Z buffer"}},
{ AutoInvalidateCache, {"Video", "Invalidate Cache Every Frame"}},
{ D3D12Adapter, { "Video", "D3D12", "Adapter"}},
{ VulkanAdapter, { "Video", "Vulkan", "Adapter"}},

View file

@ -235,6 +235,8 @@ graphics_tab::graphics_tab(std::shared_ptr<emu_settings> xSettings, Render_Creat
QCheckBox *logProg = xemu_settings->CreateEnhancedCheckBox(emu_settings::LogShaderPrograms, this);
QCheckBox *vsync = xemu_settings->CreateEnhancedCheckBox(emu_settings::VSync, this);
QCheckBox *gpuTextureScaling = xemu_settings->CreateEnhancedCheckBox(emu_settings::GPUTextureScaling, this);
QCheckBox *forceHighpZ = xemu_settings->CreateEnhancedCheckBox(emu_settings::ForceHighpZ, this);
QCheckBox *autoInvalidateCache = xemu_settings->CreateEnhancedCheckBox(emu_settings::AutoInvalidateCache, this);
// Combobox Part
QHBoxLayout *hbox1 = new QHBoxLayout();
@ -262,12 +264,14 @@ graphics_tab::graphics_tab(std::shared_ptr<emu_settings> xSettings, Render_Creat
vbox21->addWidget(dumpDepth);
vbox21->addWidget(readDepth);
vbox21->addWidget(glLegacyBuffers);
vbox21->addWidget(autoInvalidateCache);
QVBoxLayout *vbox22 = new QVBoxLayout();
vbox22->addWidget(debugOutput);
vbox22->addWidget(debugOverlay);
vbox22->addWidget(logProg);
vbox22->addWidget(vsync);
vbox22->addWidget(gpuTextureScaling);
vbox22->addWidget(forceHighpZ);
hbox2->addLayout(vbox21);
hbox2->addLayout(vbox22);