tu: Implement extendedDynamicState3SampleMask
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18912>
This commit is contained in:
@@ -3158,6 +3158,20 @@ tu_CmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,
|
||||
cmd->state.dirty |= TU_CMD_DIRTY_RAST | TU_CMD_DIRTY_RB_DEPTH_CNTL;
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
tu_CmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,
|
||||
VkSampleCountFlagBits samples,
|
||||
const VkSampleMask *pSampleMask)
|
||||
{
|
||||
TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer);
|
||||
|
||||
cmd->state.rb_blend_cntl =
|
||||
(cmd->state.rb_blend_cntl & ~A6XX_RB_BLEND_CNTL_SAMPLE_MASK__MASK) |
|
||||
A6XX_RB_BLEND_CNTL_SAMPLE_MASK(*pSampleMask & 0xffff);
|
||||
|
||||
cmd->state.dirty |= TU_CMD_DIRTY_BLEND;
|
||||
}
|
||||
|
||||
static void
|
||||
tu_flush_for_access(struct tu_cache_state *cache,
|
||||
enum tu_cmd_access_mask src_mask,
|
||||
|
||||
@@ -766,7 +766,7 @@ tu_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
|
||||
features->extendedDynamicState3DepthClampEnable = true;
|
||||
features->extendedDynamicState3DepthClipEnable = true;
|
||||
features->extendedDynamicState3LogicOpEnable = true;
|
||||
features->extendedDynamicState3SampleMask = false;
|
||||
features->extendedDynamicState3SampleMask = true;
|
||||
features->extendedDynamicState3RasterizationSamples = false;
|
||||
features->extendedDynamicState3AlphaToCoverageEnable = false;
|
||||
features->extendedDynamicState3AlphaToOneEnable = false;
|
||||
|
||||
@@ -3738,6 +3738,11 @@ tu_pipeline_builder_parse_dynamic(struct tu_pipeline_builder *builder,
|
||||
~A6XX_RB_DEPTH_CNTL_Z_CLAMP_ENABLE;
|
||||
dynamic_depth_clamp = true;
|
||||
break;
|
||||
case VK_DYNAMIC_STATE_SAMPLE_MASK_EXT:
|
||||
pipeline->dynamic_state_mask |= BIT(TU_DYNAMIC_STATE_BLEND);
|
||||
pipeline->blend.rb_blend_cntl_mask &=
|
||||
~A6XX_RB_BLEND_CNTL_SAMPLE_MASK__MASK;
|
||||
break;
|
||||
default:
|
||||
assert(!"unsupported dynamic state");
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user