Module: Mesa
Branch: master
Commit: 9f7e0523ce64a9d8e81ab07639cc27871e3b9d38
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9f7e0523ce64a9d8e81ab07639cc27871e3b9d38

Author: Bas Nieuwenhuizen <[email protected]>
Date:   Sat Jan 26 02:28:08 2019 +0100

radv: Implement VK_EXT_depth_clip_enable.

Reviewed-by: Samuel Pitoiset <[email protected]>

---

 src/amd/vulkan/radv_device.c      |  6 ++++++
 src/amd/vulkan/radv_extensions.py |  1 +
 src/amd/vulkan/radv_pipeline.c    | 11 +++++++++--
 3 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 53f2c05fc42..2aa8b3611e3 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -881,6 +881,12 @@ void radv_GetPhysicalDeviceFeatures2(
                        features->bufferDeviceAddressMultiDevice = false;
                        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/amd/vulkan/radv_extensions.py 
b/src/amd/vulkan/radv_extensions.py
index f218598f123..0440a2ec9d9 100644
--- a/src/amd/vulkan/radv_extensions.py
+++ b/src/amd/vulkan/radv_extensions.py
@@ -100,6 +100,7 @@ EXTENSIONS = [
     Extension('VK_EXT_display_surface_counter',           1, 
'VK_USE_PLATFORM_DISPLAY_KHR'),
     Extension('VK_EXT_display_control',                   1, 
'VK_USE_PLATFORM_DISPLAY_KHR'),
     Extension('VK_EXT_debug_report',                      9, True),
+    Extension('VK_EXT_depth_clip_enable',                 1, True),
     Extension('VK_EXT_depth_range_unrestricted',          1, True),
     Extension('VK_EXT_descriptor_indexing',               2, True),
     Extension('VK_EXT_discard_rectangles',                1, True),
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index 2d9c3624045..810bbd98752 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -2727,11 +2727,18 @@ radv_pipeline_generate_raster_state(struct 
radeon_cmdbuf *ctx_cs,
        const VkConservativeRasterizationModeEXT mode =
                radv_get_conservative_raster_mode(vkraster);
        uint32_t pa_sc_conservative_rast = 
S_028C4C_NULL_SQUAD_AA_MASK_ENABLE(1);
+       bool depth_clip_disable = vkraster->depthClampEnable;
+
+       const VkPipelineRasterizationDepthClipStateCreateInfoEXT 
*depth_clip_state =
+               vk_find_struct_const(vkraster->pNext, 
PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT);
+       if (depth_clip_state) {
+               depth_clip_disable = !depth_clip_state->depthClipEnable;
+       }
 
        radeon_set_context_reg(ctx_cs, R_028810_PA_CL_CLIP_CNTL,
                               S_028810_DX_CLIP_SPACE_DEF(1) | // vulkan uses 
DX conventions.
-                              
S_028810_ZCLIP_NEAR_DISABLE(vkraster->depthClampEnable ? 1 : 0) |
-                              
S_028810_ZCLIP_FAR_DISABLE(vkraster->depthClampEnable ? 1 : 0) |
+                              S_028810_ZCLIP_NEAR_DISABLE(depth_clip_disable ? 
1 : 0) |
+                              S_028810_ZCLIP_FAR_DISABLE(depth_clip_disable ? 
1 : 0) |
                               
S_028810_DX_RASTERIZATION_KILL(vkraster->rasterizerDiscardEnable ? 1 : 0) |
                               S_028810_DX_LINEAR_ATTR_CLIP_ENA(1));
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to