[v2 PATCH 7/7] d3d10/effect: Add initial support for indexing expressions.
Matteo Bruni
matteo.mystral at gmail.com
Tue Nov 2 15:47:22 CDT 2021
On Mon, Nov 1, 2021 at 11:52 AM Nikolay Sivov <nsivov at codeweavers.com> wrote:
>
> Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
> ---
> dlls/d3d10/effect.c | 556 +++++++++++++++++++++++++++++++++++++-
> dlls/d3d10/tests/effect.c | 114 ++++++++
> 2 files changed, 669 insertions(+), 1 deletion(-)
Still looking into this one. For the time being I have a single
nitpick, probably not worth acting on it just yet:
> diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c
> index 78a3d0c386a..3ae2ad4f481 100644
> --- a/dlls/d3d10/effect.c
> +++ b/dlls/d3d10/effect.c
> @@ -30,6 +30,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d10);
> ((DWORD)(ch2) << 16) | ((DWORD)(ch3) << 24 ))
> #define TAG_DXBC MAKE_TAG('D', 'X', 'B', 'C')
> #define TAG_FX10 MAKE_TAG('F', 'X', '1', '0')
> +#define TAG_FXLC MAKE_TAG('F', 'X', 'L', 'C')
> +#define TAG_CLI4 MAKE_TAG('C', 'L', 'I', '4')
> +#define TAG_CTAB MAKE_TAG('C', 'T', 'A', 'B')
>
> #define D3D10_FX10_TYPE_COLUMN_SHIFT 11
> #define D3D10_FX10_TYPE_COLUMN_MASK (0x7 << D3D10_FX10_TYPE_COLUMN_SHIFT)
> @@ -180,6 +183,89 @@ static enum d3d10_effect_container_type get_var_container_type(const struct d3d1
> }
> }
>
> +struct preshader_instr
> +{
> + unsigned int comp_count : 16;
> + unsigned int reserved : 4;
> + unsigned int opcode : 11;
> + unsigned int scalar : 1;
> +};
> +
> +typedef float (*pres_op_func)(float **args, unsigned int n);
> +
> +static float pres_ftou(float **args, unsigned int n)
> +{
> + unsigned int u = *args[0];
> + return *(float *)&u;
> +}
> +
> +static float pres_add(float **args, unsigned int n)
> +{
> + return *args[0] + *args[1];
> +}
> +
> +enum preshader_op
> +{
> + D3D10_PRESHADER_OP_FTOU = 0,
> + D3D10_PRESHADER_OP_ADD,
> + D3D10_PRESHADER_OP_LAST_OP,
> +};
> +
> +struct preshader_op_info
> +{
> + unsigned short idx;
> + unsigned short opcode;
> + char name[8];
> + pres_op_func func;
> +};
idx is an enum preshader_op, right? Any reason you're not using that
type? The field name seems to have room for improvement too (although
I realize the trouble with "opcode" also there).
More information about the wine-devel
mailing list