shader/registry: Cache tessellation state
This commit is contained in:
parent
0528be5c92
commit
66a8a3e887
|
@ -48,7 +48,7 @@ struct BindlessSamplerKey {
|
||||||
Tegra::Engines::SamplerDescriptor sampler;
|
Tegra::Engines::SamplerDescriptor sampler;
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr u32 NativeVersion = 17;
|
constexpr u32 NativeVersion = 18;
|
||||||
|
|
||||||
ShaderCacheVersionHash GetShaderCacheVersionHash() {
|
ShaderCacheVersionHash GetShaderCacheVersionHash() {
|
||||||
ShaderCacheVersionHash hash{};
|
ShaderCacheVersionHash hash{};
|
||||||
|
|
|
@ -27,6 +27,9 @@ GraphicsInfo MakeGraphicsInfo(ShaderType shader_stage, ConstBufferEngineInterfac
|
||||||
|
|
||||||
GraphicsInfo info;
|
GraphicsInfo info;
|
||||||
info.primitive_topology = graphics.regs.draw.topology;
|
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;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,15 +26,19 @@ using BindlessSamplerMap =
|
||||||
|
|
||||||
struct GraphicsInfo {
|
struct GraphicsInfo {
|
||||||
Tegra::Engines::Maxwell3D::Regs::PrimitiveTopology primitive_topology{};
|
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 {
|
struct ComputeInfo {
|
||||||
std::array<u32, 3> workgroup_size{};
|
std::array<u32, 3> workgroup_size{};
|
||||||
u32 shared_memory_size_in_words = 0;
|
u32 shared_memory_size_in_words = 0;
|
||||||
u32 local_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 {
|
struct SerializedRegistryInfo {
|
||||||
VideoCore::GuestDriverProfile guest_driver_profile;
|
VideoCore::GuestDriverProfile guest_driver_profile;
|
||||||
|
|
Reference in New Issue