diff options
Diffstat (limited to 'src/gpu/vk')
-rw-r--r-- | src/gpu/vk/GrVkPipeline.cpp | 31 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineState.cpp | 4 |
2 files changed, 23 insertions, 12 deletions
diff --git a/src/gpu/vk/GrVkPipeline.cpp b/src/gpu/vk/GrVkPipeline.cpp index 0b4289edec..567d6e89f6 100644 --- a/src/gpu/vk/GrVkPipeline.cpp +++ b/src/gpu/vk/GrVkPipeline.cpp @@ -94,24 +94,35 @@ static void setup_vertex_input_state(const GrPrimitiveProcessor& primProc, vertexInputInfo->pVertexAttributeDescriptions = attributeDesc; } +static VkPrimitiveTopology gr_primitive_type_to_vk_topology(GrPrimitiveType primitiveType) { + switch (primitiveType) { + case GrPrimitiveType::kTriangles: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + case GrPrimitiveType::kTriangleStrip: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP; + case GrPrimitiveType::kTriangleFan: + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN; + case GrPrimitiveType::kPoints: + return VK_PRIMITIVE_TOPOLOGY_POINT_LIST; + case GrPrimitiveType::kLines: + return VK_PRIMITIVE_TOPOLOGY_LINE_LIST; + case GrPrimitiveType::kLineStrip: + return VK_PRIMITIVE_TOPOLOGY_LINE_STRIP; + case GrPrimitiveType::kLinesAdjacency: + return VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY; + } + SkFAIL("invalid GrPrimitiveType"); + return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; +} static void setup_input_assembly_state(GrPrimitiveType primitiveType, VkPipelineInputAssemblyStateCreateInfo* inputAssemblyInfo) { - static const VkPrimitiveTopology gPrimitiveType2VkTopology[] = { - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, - VK_PRIMITIVE_TOPOLOGY_POINT_LIST, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP - }; - memset(inputAssemblyInfo, 0, sizeof(VkPipelineInputAssemblyStateCreateInfo)); inputAssemblyInfo->sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; inputAssemblyInfo->pNext = nullptr; inputAssemblyInfo->flags = 0; inputAssemblyInfo->primitiveRestartEnable = false; - inputAssemblyInfo->topology = gPrimitiveType2VkTopology[primitiveType]; + inputAssemblyInfo->topology = gr_primitive_type_to_vk_topology(primitiveType); } diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp index 525d75f3da..eb4a516343 100644 --- a/src/gpu/vk/GrVkPipelineState.cpp +++ b/src/gpu/vk/GrVkPipelineState.cpp @@ -570,7 +570,7 @@ bool GrVkPipelineState::Desc::Build(Desc* desc, const GrStencilSettings& stencil, GrPrimitiveType primitiveType, const GrShaderCaps& caps) { - if (!INHERITED::Build(desc, primProc, primitiveType == kPoints_GrPrimitiveType, pipeline, + if (!INHERITED::Build(desc, primProc, primitiveType == GrPrimitiveType::kPoints, pipeline, caps)) { return false; } @@ -583,7 +583,7 @@ bool GrVkPipelineState::Desc::Build(Desc* desc, b.add32(get_blend_info_key(pipeline)); - b.add32(primitiveType); + b.add32((uint32_t)primitiveType); return true; } |