Add statically disabled tessellation on macOS/iOS

This commit is contained in:
Wojtek Figat
2024-03-30 18:46:37 +01:00
parent ce07edd1ec
commit 369c19bd5d
14 changed files with 51 additions and 20 deletions

View File

@@ -133,17 +133,17 @@ PipelineLayoutVulkan* GPUPipelineStateVulkan::GetLayout()
return _layout;
DescriptorSetLayoutInfoVulkan descriptorSetLayoutInfo;
#define INIT_SHADER_STAGE(set, bit) \
if (DescriptorInfoPerStage[DescriptorSet::set]) \
descriptorSetLayoutInfo.AddBindingsForStage(bit, DescriptorSet::set, DescriptorInfoPerStage[DescriptorSet::set])
INIT_SHADER_STAGE(Vertex, VK_SHADER_STAGE_VERTEX_BIT);
#if GPU_ALLOW_TESSELLATION_SHADERS
INIT_SHADER_STAGE(Hull, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT);
INIT_SHADER_STAGE(Domain, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT);
#endif
INIT_SHADER_STAGE(Geometry, VK_SHADER_STAGE_GEOMETRY_BIT);
INIT_SHADER_STAGE(Pixel, VK_SHADER_STAGE_FRAGMENT_BIT);
#undef INIT_SHADER_STAGE
_layout = _device->GetOrCreateLayout(descriptorSetLayoutInfo);
ASSERT(_layout);
DescriptorSetsLayout = &_layout->DescriptorSetLayout;
@@ -253,8 +253,10 @@ bool GPUPipelineStateVulkan::Init(const Description& desc)
stage.pName = desc.type->GetName().Get(); \
}
INIT_SHADER_STAGE(VS, Vertex, VK_SHADER_STAGE_VERTEX_BIT);
#if GPU_ALLOW_TESSELLATION_SHADERS
INIT_SHADER_STAGE(HS, Hull, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT);
INIT_SHADER_STAGE(DS, Domain, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT);
#endif
INIT_SHADER_STAGE(GS, Geometry, VK_SHADER_STAGE_GEOMETRY_BIT);
INIT_SHADER_STAGE(PS, Pixel, VK_SHADER_STAGE_FRAGMENT_BIT);
#undef INIT_SHADER_STAGE
@@ -278,6 +280,7 @@ bool GPUPipelineStateVulkan::Init(const Description& desc)
_descInputAssembly.topology = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST;
_desc.pInputAssemblyState = &_descInputAssembly;
#if GPU_ALLOW_TESSELLATION_SHADERS
// Tessellation
if (desc.HS)
{
@@ -285,6 +288,7 @@ bool GPUPipelineStateVulkan::Init(const Description& desc)
_descTessellation.patchControlPoints = desc.HS->GetControlPointsCount();
_desc.pTessellationState = &_descTessellation;
}
#endif
// Viewport
RenderToolsVulkan::ZeroStruct(_descViewport, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO);