[PATCH vkd3d 6/9] vkd3d-shader: Implement DMOV, DMOVC, DADD, DDIV, DMUL and DRCP.

Henri Verbeet hverbeet at gmail.com
Tue Jun 15 16:54:04 CDT 2021


On Mon, 14 Jun 2021 at 05:27, Conor McCarthy <cmccarthy at codeweavers.com> wrote:
> diff --git a/libs/vkd3d-shader/dxbc.c b/libs/vkd3d-shader/dxbc.c
> index 782aed13..d23dfcad 100644
> --- a/libs/vkd3d-shader/dxbc.c
> +++ b/libs/vkd3d-shader/dxbc.c
> @@ -310,9 +310,15 @@ enum vkd3d_sm4_opcode
>      VKD3D_SM5_OP_IMM_ATOMIC_UMAX                  = 0xbc,
>      VKD3D_SM5_OP_IMM_ATOMIC_UMIN                  = 0xbd,
>      VKD3D_SM5_OP_SYNC                             = 0xbe,
> +    VKD3D_SM5_OP_DADD                             = 0xbf,
> +    VKD3D_SM5_OP_DMUL                             = 0xc2,
> +    VKD3D_SM5_OP_DMOV                             = 0xc7,
> +    VKD3D_SM5_OP_DMOVC                            = 0xc8,
>      VKD3D_SM5_OP_EVAL_SAMPLE_INDEX                = 0xcc,
>      VKD3D_SM5_OP_EVAL_CENTROID                    = 0xcd,
>      VKD3D_SM5_OP_DCL_GS_INSTANCES                 = 0xce,
> +    VKD3D_SM5_OP_DDIV                             = 0xd2,
> +    VKD3D_SM5_OP_DRCP                             = 0xd4,
>  };
>
One instruction per patch, please.

> @@ -1236,6 +1242,12 @@ static const struct vkd3d_sm4_opcode_info opcode_table[] =
>      {VKD3D_SM5_OP_EVAL_CENTROID,                    VKD3DSIH_EVAL_CENTROID,                    "f",    "f"},
>      {VKD3D_SM5_OP_DCL_GS_INSTANCES,                 VKD3DSIH_DCL_GS_INSTANCES,                 "",     "",
>              shader_sm4_read_declaration_count},
> +    {VKD3D_SM5_OP_DADD,                             VKD3DSIH_DADD,                             "d",    "dd"},
> +    {VKD3D_SM5_OP_DMUL,                             VKD3DSIH_DMUL,                             "d",    "dd"},
> +    {VKD3D_SM5_OP_DMOV,                             VKD3DSIH_DMOV,                             "d",    "d"},
> +    {VKD3D_SM5_OP_DMOVC,                            VKD3DSIH_DMOVC,                            "d",    "udd"},
> +    {VKD3D_SM5_OP_DDIV,                             VKD3DSIH_DDIV,                             "d",    "dd"},
> +    {VKD3D_SM5_OP_DRCP,                             VKD3DSIH_DRCP,                             "d",    "d"},
>  };
>
This table is ordered by vkd3d_sm4_opcode value, please keep it that way.

> diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h
> index f7a3c60e..d0fd25ee 100644
> --- a/libs/vkd3d-shader/vkd3d_shader_private.h
> +++ b/libs/vkd3d-shader/vkd3d_shader_private.h
> @@ -354,6 +354,13 @@ enum vkd3d_shader_opcode
>      VKD3DSIH_UTOF,
>      VKD3DSIH_XOR,
>
> +    VKD3DSIH_DADD,
> +    VKD3DSIH_DMUL,
> +    VKD3DSIH_DMOV,
> +    VKD3DSIH_DMOVC,
> +    VKD3DSIH_DDIV,
> +    VKD3DSIH_DRCP,
> +
>      VKD3DSIH_INVALID,
>  };
>
The elements in this enumeration are ordered, please keep them that way.



More information about the wine-devel mailing list