mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/msl: Continue when the SRV descriptor binding isn't specified in msl_ld().
Mostly to aid debugging.
This commit is contained in:
Notes:
Henri Verbeet
2025-06-05 16:18:34 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1535
@@ -735,6 +735,7 @@ static void msl_ld(struct msl_generator *gen, const struct vkd3d_shader_instruct
|
|||||||
enum vkd3d_shader_resource_type resource_type;
|
enum vkd3d_shader_resource_type resource_type;
|
||||||
struct vkd3d_string_buffer *read;
|
struct vkd3d_string_buffer *read;
|
||||||
enum vkd3d_data_type data_type;
|
enum vkd3d_data_type data_type;
|
||||||
|
unsigned int srv_binding;
|
||||||
uint32_t coord_mask;
|
uint32_t coord_mask;
|
||||||
struct msl_dst dst;
|
struct msl_dst dst;
|
||||||
|
|
||||||
@@ -779,19 +780,23 @@ static void msl_ld(struct msl_generator *gen, const struct vkd3d_shader_instruct
|
|||||||
}
|
}
|
||||||
coord_mask = vkd3d_write_mask_from_component_count(resource_type_info->read_coord_size);
|
coord_mask = vkd3d_write_mask_from_component_count(resource_type_info->read_coord_size);
|
||||||
|
|
||||||
if (!(binding = msl_get_srv_binding(gen, resource_space, resource_idx, resource_type)))
|
if ((binding = msl_get_srv_binding(gen, resource_space, resource_idx, resource_type)))
|
||||||
|
{
|
||||||
|
srv_binding = binding->binding;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
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 SRV %u (index %u, space %u).",
|
"No descriptor binding specified for SRV %u (index %u, space %u).",
|
||||||
resource_id, resource_idx, resource_space);
|
resource_id, resource_idx, resource_space);
|
||||||
return;
|
srv_binding = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
msl_dst_init(&dst, gen, ins, &ins->dst[0]);
|
msl_dst_init(&dst, gen, ins, &ins->dst[0]);
|
||||||
read = vkd3d_string_buffer_get(&gen->string_buffers);
|
read = vkd3d_string_buffer_get(&gen->string_buffers);
|
||||||
|
|
||||||
vkd3d_string_buffer_printf(read, "as_type<uint4>(");
|
vkd3d_string_buffer_printf(read, "as_type<uint4>(");
|
||||||
msl_print_srv_name(read, gen, binding->binding, resource_type_info, data_type);
|
msl_print_srv_name(read, gen, srv_binding, resource_type_info, data_type);
|
||||||
vkd3d_string_buffer_printf(read, ".read(");
|
vkd3d_string_buffer_printf(read, ".read(");
|
||||||
msl_print_src_with_type(read, gen, &ins->src[0], coord_mask, VKD3D_DATA_UINT);
|
msl_print_src_with_type(read, gen, &ins->src[0], coord_mask, VKD3D_DATA_UINT);
|
||||||
if (resource_type_info->array)
|
if (resource_type_info->array)
|
||||||
|
Reference in New Issue
Block a user