summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-02-29 08:03:22 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-03-09 22:40:07 +0100
commit66a8a3e88719aaa65a96dd0289e1fb151d199d9b (patch)
tree63af86085bf2a0b98023aae5ba3982fa82998f99
parentshader/registry: Store graphics and compute metadata (diff)
downloadyuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.tar
yuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.tar.gz
yuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.tar.bz2
yuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.tar.lz
yuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.tar.xz
yuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.tar.zst
yuzu-66a8a3e88719aaa65a96dd0289e1fb151d199d9b.zip
-rw-r--r--src/video_core/renderer_opengl/gl_shader_disk_cache.cpp2
-rw-r--r--src/video_core/shader/registry.cpp3
-rw-r--r--src/video_core/shader/registry.h8
3 files changed, 10 insertions, 3 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
index 5d5118058..df86c0cc3 100644
--- a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
@@ -48,7 +48,7 @@ struct BindlessSamplerKey {
Tegra::Engines::SamplerDescriptor sampler;
};
-constexpr u32 NativeVersion = 17;
+constexpr u32 NativeVersion = 18;
ShaderCacheVersionHash GetShaderCacheVersionHash() {
ShaderCacheVersionHash hash{};
diff --git a/src/video_core/shader/registry.cpp b/src/video_core/shader/registry.cpp
index dc2d3dce3..90dfab293 100644
--- a/src/video_core/shader/registry.cpp
+++ b/src/video_core/shader/registry.cpp
@@ -27,6 +27,9 @@ GraphicsInfo MakeGraphicsInfo(ShaderType shader_stage, ConstBufferEngineInterfac
GraphicsInfo info;
info.primitive_topology = graphics.regs.draw.topology;
+ info.tessellation_primitive = graphics.regs.tess_mode.prim;
+ info.tessellation_spacing = graphics.regs.tess_mode.spacing;
+ info.tessellation_clockwise = graphics.regs.tess_mode.cw;
return info;
}
diff --git a/src/video_core/shader/registry.h b/src/video_core/shader/registry.h
index c1a04ea02..7b7fad3d1 100644
--- a/src/video_core/shader/registry.h
+++ b/src/video_core/shader/registry.h
@@ -26,15 +26,19 @@ using BindlessSamplerMap =
struct GraphicsInfo {
Tegra::Engines::Maxwell3D::Regs::PrimitiveTopology primitive_topology{};
+ Tegra::Engines::Maxwell3D::Regs::TessellationPrimitive tessellation_primitive{};
+ Tegra::Engines::Maxwell3D::Regs::TessellationSpacing tessellation_spacing{};
+ bool tessellation_clockwise = false;
};
-static_assert(std::is_trivially_copyable_v<GraphicsInfo>);
+static_assert(std::is_trivially_copyable_v<GraphicsInfo> &&
+ std::is_standard_layout_v<GraphicsInfo>);
struct ComputeInfo {
std::array<u32, 3> workgroup_size{};
u32 shared_memory_size_in_words = 0;
u32 local_memory_size_in_words = 0;
};
-static_assert(std::is_trivially_copyable_v<ComputeInfo>);
+static_assert(std::is_trivially_copyable_v<ComputeInfo> && std::is_standard_layout_v<ComputeInfo>);
struct SerializedRegistryInfo {
VideoCore::GuestDriverProfile guest_driver_profile;