forked from eden-emu/eden
		
	shader/registry: Cache tessellation state
This commit is contained in:
		
							parent
							
								
									22052e73de
								
							
						
					
					
						commit
						776aa5bdf9
					
				
					 3 changed files with 10 additions and 3 deletions
				
			
		|  | @ -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; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ReinUsesLisp
						ReinUsesLisp