summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2017-10-06 01:10:11 +0200
committerBas Nieuwenhuizen <[email protected]>2017-10-06 01:41:29 +0200
commitc62afd094dc6aef58ba7f12f01b90c46e1f94262 (patch)
treeaf8e69dcda56330e2c5c6633c5ff7fba523e0a8e
parentca2163463239ad121a68e603105c10739815967f (diff)
radv: Allow setting the domain origin in tess.
Reviewed-by: Dave Airlie <[email protected]>
-rw-r--r--src/amd/vulkan/radv_pipeline.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 5800f297074..95a00cb357d 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -1542,11 +1542,19 @@ calculate_tess_state(struct radv_pipeline *pipeline,
break;
}
+ bool ccw = tes->info.tes.ccw;
+ const VkPipelineTessellationDomainOriginStateCreateInfoKHR *domain_origin_state =
+ vk_find_struct_const(pCreateInfo->pTessellationState,
+ PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR);
+
+ if (domain_origin_state && domain_origin_state->domainOrigin != VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR)
+ ccw = !ccw;
+
if (tes->info.tes.point_mode)
topology = V_028B6C_OUTPUT_POINT;
else if (tes->info.tes.primitive_mode == GL_ISOLINES)
topology = V_028B6C_OUTPUT_LINE;
- else if (tes->info.tes.ccw)
+ else if (ccw)
topology = V_028B6C_OUTPUT_TRIANGLE_CW;
else
topology = V_028B6C_OUTPUT_TRIANGLE_CCW;