mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Validate SSA write masks.
This commit is contained in:
committed by
Henri Verbeet
parent
d91d552a5e
commit
0c18736370
Notes:
Henri Verbeet
2025-04-14 17:16:33 +02:00
Approved-by: Francisco Casas (@fcasas) Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1450
@@ -8255,6 +8255,14 @@ static void vsir_validate_dst_param(struct validation_context *ctx,
|
|||||||
switch (dst->reg.type)
|
switch (dst->reg.type)
|
||||||
{
|
{
|
||||||
case VKD3DSPR_SSA:
|
case VKD3DSPR_SSA:
|
||||||
|
if (dst->reg.dimension == VSIR_DIMENSION_VEC4
|
||||||
|
&& dst->write_mask != VKD3DSP_WRITEMASK_0
|
||||||
|
&& dst->write_mask != (VKD3DSP_WRITEMASK_0 | VKD3DSP_WRITEMASK_1)
|
||||||
|
&& dst->write_mask != (VKD3DSP_WRITEMASK_0 | VKD3DSP_WRITEMASK_1 | VKD3DSP_WRITEMASK_2)
|
||||||
|
&& dst->write_mask != VKD3DSP_WRITEMASK_ALL)
|
||||||
|
validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_WRITE_MASK,
|
||||||
|
"SSA register has invalid write mask %#x.", dst->write_mask);
|
||||||
|
|
||||||
if (dst->reg.idx[0].offset < ctx->program->ssa_count)
|
if (dst->reg.idx[0].offset < ctx->program->ssa_count)
|
||||||
{
|
{
|
||||||
struct validation_context_ssa_data *data = &ctx->ssas[dst->reg.idx[0].offset];
|
struct validation_context_ssa_data *data = &ctx->ssas[dst->reg.idx[0].offset];
|
||||||
|
Reference in New Issue
Block a user