diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c index 5f87eae5..87b2d718 100644 --- a/libs/vkd3d-shader/dxbc.c +++ b/libs/vkd3d-shader/dxbc.c @@ -1521,7 +1521,7 @@ static BOOL shader_sm4_read_src_param(struct vkd3d_sm4_data *priv, const DWORD * if (src_param->reg.type == VKD3DSPR_IMMCONST) { - src_param->swizzle = VKD3DSP_NOSWIZZLE; + src_param->swizzle = VKD3D_NO_SWIZZLE; } else { @@ -1531,7 +1531,7 @@ static BOOL shader_sm4_read_src_param(struct vkd3d_sm4_data *priv, const DWORD * switch (swizzle_type) { case VKD3D_SM4_SWIZZLE_NONE: - src_param->swizzle = VKD3DSP_NOSWIZZLE; + src_param->swizzle = VKD3D_NO_SWIZZLE; break; case VKD3D_SM4_SWIZZLE_SCALAR: diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index f646d540..53ddd445 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -2349,7 +2349,7 @@ static uint32_t vkd3d_dxbc_compiler_emit_swizzle(struct vkd3d_dxbc_compiler *com unsigned int i, component_idx, component_count; uint32_t type_id, components[VKD3D_VEC4_SIZE]; - if (swizzle == VKD3DSP_NOSWIZZLE && write_mask == VKD3DSP_WRITEMASK_ALL) + if (swizzle == VKD3D_NO_SWIZZLE && write_mask == VKD3DSP_WRITEMASK_ALL) return val_id; component_count = vkd3d_write_mask_component_count(write_mask); @@ -2972,7 +2972,7 @@ static uint32_t vkd3d_dxbc_compiler_emit_input(struct vkd3d_dxbc_compiler *compi if (val_id && input_component_count != component_count) val_id = vkd3d_dxbc_compiler_emit_swizzle(compiler, - val_id, VKD3D_TYPE_FLOAT, VKD3DSP_NOSWIZZLE, dst->write_mask); + val_id, VKD3D_TYPE_FLOAT, VKD3D_NO_SWIZZLE, dst->write_mask); vkd3d_symbol_make_register(®_symbol, reg); @@ -4601,7 +4601,7 @@ static void vkd3d_dxbc_compiler_emit_control_flow_instruction(struct vkd3d_dxbc_ assert(compiler->control_flow_depth); assert(cf_info->current_block == VKD3D_BLOCK_SWITCH); - assert(src->swizzle == VKD3DSP_NOSWIZZLE && src->reg.type == VKD3DSPR_IMMCONST); + assert(src->swizzle == VKD3D_NO_SWIZZLE && src->reg.type == VKD3DSPR_IMMCONST); value = *src->reg.u.immconst_data; if (!vkd3d_array_reserve((void **)&cf_info->u.switch_.case_blocks, &cf_info->u.switch_.case_blocks_size, @@ -5946,7 +5946,7 @@ static void vkd3d_dxbc_compiler_emit_output_setup_function(struct vkd3d_dxbc_com write_mask = signature->elements[i].mask & 0xff; val_id = vkd3d_dxbc_compiler_emit_swizzle(compiler, - param_id[variable_idx], VKD3D_TYPE_FLOAT, VKD3DSP_NOSWIZZLE, write_mask); + param_id[variable_idx], VKD3D_TYPE_FLOAT, VKD3D_NO_SWIZZLE, write_mask); if (compiler->output_info[i].component_type != VKD3D_TYPE_FLOAT) { diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 09c2e1dc..45af2db4 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -390,8 +390,6 @@ enum vkd3d_immconst_type VKD3D_IMMCONST_VEC4, }; -#define VKD3DSP_NOSWIZZLE (0u | (1u << 2) | (2u << 4) | (3u << 6)) - enum vkd3d_shader_src_modifier { VKD3DSPSM_NONE = 0, @@ -852,11 +850,22 @@ static inline unsigned int vkd3d_write_mask_component_count(DWORD write_mask) return count; } +/* swizzle bits fields: wwzzyyxx */ +#define VKD3D_SWIZZLE_X (0u) +#define VKD3D_SWIZZLE_Y (1u) +#define VKD3D_SWIZZLE_Z (2u) +#define VKD3D_SWIZZLE_W (3u) +#define VKD3D_SWIZZLE_MASK (0x3u) +#define VKD3D_SWIZZLE_SHIFT(idx) (2u * (idx)) +#define VKD3D_NO_SWIZZLE ((VKD3D_SWIZZLE_X << VKD3D_SWIZZLE_SHIFT(0)) \ + | (VKD3D_SWIZZLE_Y << VKD3D_SWIZZLE_SHIFT(1)) \ + | (VKD3D_SWIZZLE_Z << VKD3D_SWIZZLE_SHIFT(2)) \ + | (VKD3D_SWIZZLE_W << VKD3D_SWIZZLE_SHIFT(3))) + static inline unsigned int vkd3d_swizzle_get_component(DWORD swizzle, unsigned int idx) { - /* swizzle bits fields: wwzzyyxx */ - return (swizzle >> (2 * idx)) & 0x3; + return (swizzle >> VKD3D_SWIZZLE_SHIFT(idx)) & VKD3D_SWIZZLE_MASK; } #define VKD3D_DXBC_MAX_SOURCE_COUNT 6