mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 08:59:03 -06:00 
			
		
		
		
	shader/registry: Cache tessellation state
This commit is contained in:
		@@ -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
	
	Block a user