diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-07 05:11:03 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-07 20:20:39 +0100 |
commit | 179ee963db1c8310e533daa4457b02b7a8141539 (patch) | |
tree | f511ec266467559a841926b9f7bf27c72b8f3e46 /src/video_core/engines | |
parent | gl_shader_cache: Use dirty flags for shaders (diff) | |
download | yuzu-179ee963db1c8310e533daa4457b02b7a8141539.tar yuzu-179ee963db1c8310e533daa4457b02b7a8141539.tar.gz yuzu-179ee963db1c8310e533daa4457b02b7a8141539.tar.bz2 yuzu-179ee963db1c8310e533daa4457b02b7a8141539.tar.lz yuzu-179ee963db1c8310e533daa4457b02b7a8141539.tar.xz yuzu-179ee963db1c8310e533daa4457b02b7a8141539.tar.zst yuzu-179ee963db1c8310e533daa4457b02b7a8141539.zip |
Diffstat (limited to 'src/video_core/engines')
-rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 9 | ||||
-rw-r--r-- | src/video_core/engines/maxwell_3d.h | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 0ed7bc5d8..88483eab9 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -135,6 +135,15 @@ void Maxwell3D::CallMethod(const GPU::MethodCall& method_call) { if (regs.reg_array[method_call.method] != method_call.argument) { regs.reg_array[method_call.method] = method_call.argument; + // Color buffers + constexpr u32 first_rt_reg = MAXWELL3D_REG_INDEX(rt); + constexpr u32 registers_per_rt = sizeof(regs.rt[0]) / sizeof(u32); + if (method_call.method >= first_rt_reg && + method_call.method < first_rt_reg + registers_per_rt * Regs::NumRenderTargets) { + const std::size_t rt_index = (method_call.method - first_rt_reg) / registers_per_rt; + dirty_flags.color_buffer |= 1u << static_cast<u32>(rt_index); + } + // Shader constexpr u32 shader_registers_count = sizeof(regs.shader_config[0]) * Regs::MaxShaderProgram / sizeof(u32); diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index d50e5a126..8d0e18d80 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -1089,12 +1089,15 @@ public: MemoryManager& memory_manager; struct DirtyFlags { + u8 color_buffer = 0xFF; + bool shaders = true; bool vertex_attrib_format = true; u32 vertex_array = 0xFFFFFFFF; void OnMemoryWrite() { + color_buffer = 0xFF; shaders = true; vertex_array = 0xFFFFFFFF; } |