shader/registry: Cache tessellation state

merge-requests/60/head
ReinUsesLisp 2020-02-29 04:03:22 +07:00
parent 0528be5c92
commit 66a8a3e887
3 changed files with 10 additions and 3 deletions

@ -48,7 +48,7 @@ struct BindlessSamplerKey {
Tegra::Engines::SamplerDescriptor sampler;
};
constexpr u32 NativeVersion = 17;
constexpr u32 NativeVersion = 18;
ShaderCacheVersionHash GetShaderCacheVersionHash() {
ShaderCacheVersionHash hash{};

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

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