mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
vkd3d-shader/msl: Pass a descriptor to msl_get_uav_binding().
This commit is contained in:
committed by
Henri Verbeet
parent
6915388289
commit
a0db928473
Notes:
Henri Verbeet
2025-10-29 13:44:04 +01:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1807
@@ -261,11 +261,11 @@ static bool msl_get_srv_binding(const struct msl_generator *gen,
|
|||||||
? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE, idx);
|
? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool msl_get_uav_binding(const struct msl_generator *gen, unsigned int register_space,
|
static bool msl_get_uav_binding(const struct msl_generator *gen,
|
||||||
unsigned int register_idx, enum vkd3d_shader_resource_type resource_type, unsigned int *idx)
|
const struct vkd3d_shader_descriptor_info1 *descriptor, unsigned int register_idx, unsigned int *idx)
|
||||||
{
|
{
|
||||||
return msl_get_binding(gen, register_space, register_idx,
|
return msl_get_binding(gen, descriptor->register_space, register_idx,
|
||||||
VKD3D_SHADER_DESCRIPTOR_TYPE_UAV, resource_type == VKD3D_SHADER_RESOURCE_BUFFER
|
VKD3D_SHADER_DESCRIPTOR_TYPE_UAV, descriptor->resource_type == VKD3D_SHADER_RESOURCE_BUFFER
|
||||||
? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE, idx);
|
? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE, idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1182,7 +1182,7 @@ static void msl_store_uav_typed(struct msl_generator *gen, const struct vkd3d_sh
|
|||||||
unsigned int uav_id, uav_idx, uav_space;
|
unsigned int uav_id, uav_idx, uav_space;
|
||||||
struct vkd3d_string_buffer *image_data;
|
struct vkd3d_string_buffer *image_data;
|
||||||
enum vsir_data_type data_type;
|
enum vsir_data_type data_type;
|
||||||
unsigned int uav_binding;
|
unsigned int uav_binding = 0;
|
||||||
uint32_t coord_mask;
|
uint32_t coord_mask;
|
||||||
|
|
||||||
if (ins->dst[0].reg.idx[0].rel_addr || ins->dst[0].reg.idx[1].rel_addr)
|
if (ins->dst[0].reg.idx[0].rel_addr || ins->dst[0].reg.idx[1].rel_addr)
|
||||||
@@ -1220,13 +1220,10 @@ static void msl_store_uav_typed(struct msl_generator *gen, const struct vkd3d_sh
|
|||||||
}
|
}
|
||||||
coord_mask = vkd3d_write_mask_from_component_count(resource_type_info->coord_size);
|
coord_mask = vkd3d_write_mask_from_component_count(resource_type_info->coord_size);
|
||||||
|
|
||||||
if (!msl_get_uav_binding(gen, uav_space, uav_idx, resource_type, &uav_binding))
|
if (d && !msl_get_uav_binding(gen, d, uav_idx, &uav_binding))
|
||||||
{
|
|
||||||
msl_compiler_error(gen, VKD3D_SHADER_ERROR_MSL_BINDING_NOT_FOUND,
|
msl_compiler_error(gen, VKD3D_SHADER_ERROR_MSL_BINDING_NOT_FOUND,
|
||||||
"No descriptor binding specified for UAV %u (index %u, space %u).",
|
"No descriptor binding specified for UAV %u (index %u, space %u).",
|
||||||
uav_id, uav_idx, uav_space);
|
uav_id, uav_idx, uav_space);
|
||||||
uav_binding = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
image_data = vkd3d_string_buffer_get(&gen->string_buffers);
|
image_data = vkd3d_string_buffer_get(&gen->string_buffers);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user