Browse Source

shader/registry: Cache tessellation state

nce_cpp
ReinUsesLisp 6 years ago
parent
commit
776aa5bdf9
  1. 2
      src/video_core/renderer_opengl/gl_shader_disk_cache.cpp
  2. 3
      src/video_core/shader/registry.cpp
  3. 8
      src/video_core/shader/registry.h

2
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{};

3
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;
}

8
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;

Loading…
Cancel
Save