summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_disk_cache.h
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-11-13 03:39:45 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-11-23 01:28:47 +0100
commitdbeb52387979c7e28c0acb03dfc1468146947104 (patch)
tree8c8e681dcc11a137517839dd64d839541cb6f9ce /src/video_core/renderer_opengl/gl_shader_disk_cache.h
parentgl_shader_cache: Specialize shader workgroup (diff)
downloadyuzu-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.h18
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);
}
};