From 1610c69f34d17bd7d1500d6749543744d03225d4 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Thu, 23 Jul 2020 11:44:40 +0200 Subject: [PATCH] tu: Enable VK_EXT_depth_clip_enable Part-of: --- src/freedreno/vulkan/tu_device.c | 6 ++++++ src/freedreno/vulkan/tu_extensions.py | 1 + src/freedreno/vulkan/tu_pipeline.c | 12 ++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c index 7f0ac1fe499..5ba6b01be9e 100644 --- a/src/freedreno/vulkan/tu_device.c +++ b/src/freedreno/vulkan/tu_device.c @@ -768,6 +768,12 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, features->privateData = true; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: { + VkPhysicalDeviceDepthClipEnableFeaturesEXT *features = + (VkPhysicalDeviceDepthClipEnableFeaturesEXT *)ext; + features->depthClipEnable = true; + break; + } default: break; } diff --git a/src/freedreno/vulkan/tu_extensions.py b/src/freedreno/vulkan/tu_extensions.py index 7a3fd7b637d..be078daf7ce 100644 --- a/src/freedreno/vulkan/tu_extensions.py +++ b/src/freedreno/vulkan/tu_extensions.py @@ -87,6 +87,7 @@ EXTENSIONS = [ Extension('VK_KHR_variable_pointers', 1, True), Extension('VK_EXT_private_data', 1, True), Extension('VK_EXT_shader_stencil_export', 1, True), + Extension('VK_EXT_depth_clip_enable', 1, True), ] MAX_API_VERSION = VkVersion(MAX_API_VERSION) diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index 062102c02fb..541d834bb9c 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -2216,13 +2216,21 @@ tu_pipeline_builder_parse_rasterization(struct tu_pipeline_builder *builder, enum a6xx_polygon_mode mode = tu6_polygon_mode(rast_info->polygonMode); + bool depth_clip_disable = rast_info->depthClampEnable; + + const VkPipelineRasterizationDepthClipStateCreateInfoEXT *depth_clip_state = + vk_find_struct_const(rast_info, PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT); + if (depth_clip_state) + depth_clip_disable = !depth_clip_state->depthClipEnable; + struct tu_cs cs; pipeline->rast_state = tu_cs_draw_state(&pipeline->cs, &cs, 9); tu_cs_emit_regs(&cs, A6XX_GRAS_CL_CNTL( - .znear_clip_disable = rast_info->depthClampEnable, - .zfar_clip_disable = rast_info->depthClampEnable, + .znear_clip_disable = depth_clip_disable, + .zfar_clip_disable = depth_clip_disable, + /* TODO should this be depth_clip_disable instead? */ .unk5 = rast_info->depthClampEnable, .zero_gb_scale_z = 1, .vp_clip_code_ignore = 1)); -- 2.30.2