diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index e45ddc33bd1..47f7700195a 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -3428,6 +3428,16 @@ v3dv_CmdSetDepthBias(VkCommandBuffer commandBuffer, cmd_buffer->state.dirty |= V3DV_CMD_DIRTY_DEPTH_BIAS; } +void +v3dv_CmdSetDepthBounds(VkCommandBuffer commandBuffer, + float minDepthBounds, + float maxDepthBounds) +{ + /* We do not support depth bounds testing so we just ingore this. We are + * already asserting that pipelines don't enable the feature anyway. + */ +} + void v3dv_CmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 87750ad1cec..9c010a3a1ba 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -552,7 +552,7 @@ v3dv_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, .depthClamp = false, .depthBiasClamp = false, .fillModeNonSolid = false, - .depthBounds = false, + .depthBounds = false, /* Only available since V3D 4.3.16.2 */ .wideLines = false, .largePoints = false, .alphaToOne = false, diff --git a/src/broadcom/vulkan/v3dv_meta_clear.c b/src/broadcom/vulkan/v3dv_meta_clear.c index e4d8c5cf800..d90bc06de3b 100644 --- a/src/broadcom/vulkan/v3dv_meta_clear.c +++ b/src/broadcom/vulkan/v3dv_meta_clear.c @@ -229,7 +229,6 @@ create_pipeline(struct v3dv_device *device, VK_DYNAMIC_STATE_DEPTH_BIAS, #if 0 VK_DYNAMIC_STATE_LINE_WIDTH, - VK_DYNAMIC_STATE_DEPTH_BOUNDS, #endif }, }, diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index 346e7f03f76..07414ce6600 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -3049,7 +3049,6 @@ create_pipeline(struct v3dv_device *device, VK_DYNAMIC_STATE_DEPTH_BIAS, #if 0 VK_DYNAMIC_STATE_LINE_WIDTH, - VK_DYNAMIC_STATE_DEPTH_BOUNDS, #endif }, }, diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index bb015b3637c..f9c70369301 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -1541,6 +1541,14 @@ v3dv_dynamic_state_mask(VkDynamicState state) return V3DV_DYNAMIC_BLEND_CONSTANTS; case VK_DYNAMIC_STATE_DEPTH_BIAS: return V3DV_DYNAMIC_DEPTH_BIAS; + + /* Depth bounds testing is not available in in V3D 4.2 so here we are just + * ignoring this dynamic state. We are already asserting at pipeline creation + * time that depth bounds testing is not enabled. + */ + case VK_DYNAMIC_STATE_DEPTH_BOUNDS: + return 0; + default: unreachable("Unhandled dynamic state"); } @@ -2313,6 +2321,11 @@ pipeline_init(struct v3dv_pipeline *pipeline, const VkPipelineColorBlendStateCreateInfo *cb_info = raster_enabled ? pCreateInfo->pColorBlendState : NULL; + /* V3D 4.2 doesn't support depth bounds testing so we don't advertise that + * feature and it shouldn't be used by any pipeline. + */ + assert(!ds_info || !ds_info->depthBoundsTestEnable); + pack_blend(pipeline, cb_info); pack_cfg_bits(pipeline, ds_info, rs_info); pack_stencil_cfg(pipeline, ds_info);