On Mon, 16 Aug 2021 at 06:16, Conor McCarthy cmccarthy@codeweavers.com wrote:
@@ -1169,7 +1170,7 @@ static bool shader_sm4_read_param(struct vkd3d_sm4_data *priv, const DWORD **ptr WARN("Ignoring minimum precision %#x.\n", min_precis);
if (non_uniform)
FIXME("Ignoring extended modifier NON_UNIFORM.\n");
param->modifier = VKD3DSPRM_NONUNIFORM; }
Should there be trace.c changes to go along with this?
@@ -3242,6 +3252,9 @@ static uint32_t vkd3d_dxbc_compiler_get_descriptor_index(struct vkd3d_dxbc_compi
index.offset -= binding_base_idx; index_id = vkd3d_dxbc_compiler_emit_register_addressing(compiler, &index);
- /* AMD drivers rely on the index being marked as nonuniform */
- if (reg->modifier == VKD3DSPRM_NONUNIFORM)
vkd3d_dxbc_compiler_decorate_nonuniform(compiler, index_id);
Is that radv, amdvlk, or radeonsi? Any particular version?
+enum vkd3d_shader_register_modifier +{
- VKD3DSPRM_NONE = 0,
- VKD3DSPRM_NONUNIFORM = 1,
+};
enum vkd3d_shader_src_modifier { VKD3DSPSM_NONE = 0, @@ -612,6 +618,7 @@ struct vkd3d_shader_register_index struct vkd3d_shader_register { enum vkd3d_shader_register_type type;
- enum vkd3d_shader_register_modifier modifier; enum vkd3d_data_type data_type; struct vkd3d_shader_register_index idx[3]; enum vkd3d_immconst_type immconst_type;
It seems tempting to simply add a "bool non_uniform;" field.