On Wed, 14 Jul 2021 at 08:38, Conor McCarthy cmccarthy@codeweavers.com wrote:
July 14, 2021 12:25 AM, "Henri Verbeet" hverbeet@gmail.com wrote:
dst_param->write_mask = (token & VKD3D_SM4_WRITEMASK_MASK) >> VKD3D_SM4_WRITEMASK_SHIFT;
- if (data_type == VKD3D_DATA_DOUBLE)
- dst_param->write_mask = vkd3d_write_mask_64_from_32(dst_param->write_mask);
/* Scalar registers are declared with no write mask in shader bytecode. */ if (!dst_param->write_mask && shader_sm4_is_scalar_register(&dst_param->reg)) dst_param->write_mask = VKD3DSP_WRITEMASK_0;
Does this need a corresponding change in trace.c? Also, should we do the same for swizzles?
It does need trace changes, but these lines are actually not needed for the DEQ instruction so I'll leave them out of v2.
Right, deq only has double source parameters.
Swizzle is always expressed in 32-bit chunks so no changes are required there.
Sure, but I'm wondering if for consistency it would perhaps be a good thing to express swizzles in terms of the register's data type in our internal IR, like we do for write masks.