This conflicts with !304.
From b2800c80642369eddd7e65b52c3b7d4cb334ecee Mon Sep 17 00:00:00 2001 From: Conor McCarthy <cmccarthy@codeweavers.com> Date: Wed, 16 Aug 2023 13:31:49 +1000 Subject: [PATCH 1/5] vkd3d-shader/tpf: Fix extraction of the UAV declaration flags. The flags start at bit 16 in the token, and bit 17 indicates an ROV.
So what's at bit 15 that breaks things? Also, technically this is making two separate changes. Should there be a corresponding change to shader_dump_uav_flags() as well?
static void vkd3d_shader_scan_resource_declaration(struct vkd3d_shader_scan_context *context, - const struct vkd3d_shader_resource *resource, enum vkd3d_shader_resource_type resource_type, - enum vkd3d_shader_resource_data_type resource_data_type) + const struct vkd3d_shader_instruction *instruction, const struct vkd3d_shader_resource *resource, + enum vkd3d_shader_resource_type resource_type, enum vkd3d_shader_resource_data_type resource_data_type) {
Passing the entire instruction to vkd3d_shader_scan_resource_declaration() doesn't seem great to me; it seems to me that that means we're either passing too much information and could instead just pass e.g. the instruction flags, or that vkd3d_shader_scan_resource_declaration() isn't the right tool here, and the caller should instead call vkd3d_shader_scan_add_descriptor() itself.
@@ -613,6 +613,7 @@ enum vkd3d_shader_sync_flags { VKD3DSSF_THREAD_GROUP = 0x1, VKD3DSSF_GROUP_SHARED_MEMORY = 0x2, + VKD3DSSF_THREAD_GROUP_UAV = 0x4, VKD3DSSF_GLOBAL_UAV = 0x8, };
Like for the vkd3d_shader_uav_flags change, I'd expect a corresponding change to shader_dump_sync_flags() for this change.