diff options
| author | TellowKrinkle <tellowkrinkle@gmail.com> | 2022-06-18 20:33:18 -0500 |
|---|---|---|
| committer | TellowKrinkle <tellowkrinkle@gmail.com> | 2022-09-19 16:28:24 -0500 |
| commit | 7edc8b4e794a71da5b21cfbdb850420dfbac5122 (patch) | |
| tree | e8567b57582dc4d735121c89faf15ad3c4721dae /Source | |
| parent | 99533d28405f9a9e06d20b8f49793423d73f9009 (diff) | |
VideoBackends:Metal: Don't set primitive on ubershaders
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/VideoBackends/Metal/MTLObjectCache.mm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Source/Core/VideoBackends/Metal/MTLObjectCache.mm b/Source/Core/VideoBackends/Metal/MTLObjectCache.mm index 0110ebb769..49a9f4b1fb 100644 --- a/Source/Core/VideoBackends/Metal/MTLObjectCache.mm +++ b/Source/Core/VideoBackends/Metal/MTLObjectCache.mm @@ -330,10 +330,13 @@ public: // Throw extras in bits we don't otherwise use if (cfg.rasterization_state.cullmode == CullMode::All) blend.hex |= 1 << 29; - if (cfg.rasterization_state.primitive == PrimitiveType::Points) - blend.hex |= 1 << 30; - else if (cfg.rasterization_state.primitive == PrimitiveType::Lines) - blend.hex |= 1 << 31; + if (cfg.usage != AbstractPipelineUsage::GXUber) + { + if (cfg.rasterization_state.primitive == PrimitiveType::Points) + blend.hex |= 1 << 30; + else if (cfg.rasterization_state.primitive == PrimitiveType::Lines) + blend.hex |= 1 << 31; + } } PipelineID() { memset(this, 0, sizeof(*this)); } PipelineID(const PipelineID& other) { memcpy(this, &other, sizeof(*this)); } @@ -386,7 +389,8 @@ public: if (config.vertex_format) [desc setVertexDescriptor:static_cast<const VertexFormat*>(config.vertex_format)->Get()]; RasterizationState rs = config.rasterization_state; - [desc setInputPrimitiveTopology:GetClass(rs.primitive)]; + if (config.usage != AbstractPipelineUsage::GXUber) + [desc setInputPrimitiveTopology:GetClass(rs.primitive)]; if (rs.cullmode == CullMode::All) [desc setRasterizationEnabled:NO]; MTLRenderPipelineColorAttachmentDescriptor* color0 = |
