diff --git a/libs/vkd3d-shader/hlsl.h b/libs/vkd3d-shader/hlsl.h index a0167971..5d815b73 100644 --- a/libs/vkd3d-shader/hlsl.h +++ b/libs/vkd3d-shader/hlsl.h @@ -50,37 +50,17 @@ * DEALINGS IN THE SOFTWARE. */ -#define HLSL_SWIZZLE_X (0u) -#define HLSL_SWIZZLE_Y (1u) -#define HLSL_SWIZZLE_Z (2u) -#define HLSL_SWIZZLE_W (3u) - -#define HLSL_SWIZZLE(x, y, z, w) \ - (((HLSL_SWIZZLE_ ## x) << 0) \ - | ((HLSL_SWIZZLE_ ## y) << 2) \ - | ((HLSL_SWIZZLE_ ## z) << 4) \ - | ((HLSL_SWIZZLE_ ## w) << 6)) - -#define HLSL_SWIZZLE_MASK (0x3u) -#define HLSL_SWIZZLE_SHIFT(idx) (2u * (idx)) +#define HLSL_SWIZZLE VKD3D_SHADER_SWIZZLE static inline unsigned int hlsl_swizzle_get_component(uint32_t swizzle, unsigned int idx) { - return (swizzle >> HLSL_SWIZZLE_SHIFT(idx)) & HLSL_SWIZZLE_MASK; -} - -static inline uint32_t vsir_swizzle_from_hlsl(uint32_t swizzle) -{ - return vkd3d_shader_create_swizzle(hlsl_swizzle_get_component(swizzle, 0), - hlsl_swizzle_get_component(swizzle, 1), - hlsl_swizzle_get_component(swizzle, 2), - hlsl_swizzle_get_component(swizzle, 3)); + return vsir_swizzle_get_component(swizzle, idx); } static inline void hlsl_swizzle_set_component(uint32_t *swizzle, unsigned int idx, unsigned int component) { - *swizzle &= ~(HLSL_SWIZZLE_MASK << HLSL_SWIZZLE_SHIFT(idx)); - *swizzle |= component << HLSL_SWIZZLE_SHIFT(idx); + *swizzle &= ~(VKD3D_SHADER_SWIZZLE_MASK << VKD3D_SHADER_SWIZZLE_SHIFT(idx)); + *swizzle |= component << VKD3D_SHADER_SWIZZLE_SHIFT(idx); } enum hlsl_type_class diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index fbf70d00..0f394fb2 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -6824,7 +6824,6 @@ static uint32_t generate_vsir_get_src_swizzle(uint32_t src_writemask, uint32_t d swizzle = hlsl_swizzle_from_writemask(src_writemask); swizzle = hlsl_map_swizzle(swizzle, dst_writemask); - swizzle = vsir_swizzle_from_hlsl(swizzle); return swizzle; } @@ -7895,7 +7894,6 @@ static void generate_vsir_instr_swizzle(struct hlsl_ctx *ctx, swizzle = hlsl_swizzle_from_writemask(val->reg.writemask); swizzle = hlsl_combine_swizzles(swizzle, swizzle_instr->u.vector, instr->data_type->dimx); swizzle = hlsl_map_swizzle(swizzle, ins->dst[0].write_mask); - swizzle = vsir_swizzle_from_hlsl(swizzle); src_param = &ins->src[0]; VKD3D_ASSERT(val->type != HLSL_IR_CONSTANT);