diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-11-13 03:39:45 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-11-23 01:28:47 +0100 |
commit | dbeb52387979c7e28c0acb03dfc1468146947104 (patch) | |
tree | 8c8e681dcc11a137517839dd64d839541cb6f9ce /src/video_core/renderer_opengl/gl_shader_disk_cache.h | |
parent | gl_shader_cache: Specialize shader workgroup (diff) | |
download | yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.tar yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.tar.gz yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.tar.bz2 yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.tar.lz yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.tar.xz yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.tar.zst yuzu-dbeb52387979c7e28c0acb03dfc1468146947104.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/gl_shader_disk_cache.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.h b/src/video_core/renderer_opengl/gl_shader_disk_cache.h index 4c7ca004d..6f8e51364 100644 --- a/src/video_core/renderer_opengl/gl_shader_disk_cache.h +++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.h @@ -64,9 +64,10 @@ struct ProgramVariant final { : base_bindings{base_bindings}, primitive_mode{primitive_mode} {} /// Compute constructor. - explicit constexpr ProgramVariant(u32 block_x, u32 block_y, u32 block_z) noexcept - : block_x{block_x}, block_y{static_cast<u16>(block_y)}, block_z{static_cast<u16>(block_z)} { - } + explicit constexpr ProgramVariant(u32 block_x, u32 block_y, u32 block_z, + u32 shared_memory_size) noexcept + : block_x{block_x}, block_y{static_cast<u16>(block_y)}, block_z{static_cast<u16>(block_z)}, + shared_memory_size{shared_memory_size} {} // Graphics specific parameters. BaseBindings base_bindings{}; @@ -76,11 +77,13 @@ struct ProgramVariant final { u32 block_x{}; u16 block_y{}; u16 block_z{}; + u32 shared_memory_size{}; bool operator==(const ProgramVariant& rhs) const noexcept { - return std::tie(base_bindings, primitive_mode, block_x, block_y, block_z) == - std::tie(rhs.base_bindings, rhs.primitive_mode, rhs.block_x, rhs.block_y, - rhs.block_z); + return std::tie(base_bindings, primitive_mode, block_x, block_y, block_z, + shared_memory_size) == std::tie(rhs.base_bindings, rhs.primitive_mode, + rhs.block_x, rhs.block_y, rhs.block_z, + rhs.shared_memory_size); } bool operator!=(const ProgramVariant& rhs) const noexcept { @@ -129,7 +132,8 @@ struct hash<OpenGL::ProgramVariant> { (static_cast<std::size_t>(variant.primitive_mode) << 6) ^ static_cast<std::size_t>(variant.block_x) ^ (static_cast<std::size_t>(variant.block_y) << 32) ^ - (static_cast<std::size_t>(variant.block_z) << 48); + (static_cast<std::size_t>(variant.block_z) << 48) ^ + (static_cast<std::size_t>(variant.shared_memory_size) << 16); } }; |