[Mesa-dev] [PATCH 20/22] st/nine: Capture also default matrices for D3DSBT_ALL

Axel Davy davyaxel0 at gmail.com
Sun Sep 23 21:10:28 UTC 2018


It should be
last_index += D3DTS_WORLDMATRIX(0) - 10;

I drop this patch from the serie and patch 21/22 as they need more testing.

On 9/23/18 7:00 PM, Axel Davy wrote:
> We avoid allocating space for never unused matrices.
> However we must do as if we had captured them.
> Thus when a D3DSBT_ALL stateblock apply has fewer matrices
> than device state, allocate the default matrices for the stateblock
> before applying.
>
> Signed-off-by: Axel Davy <davyaxel0 at gmail.com>
> ---
>   src/gallium/state_trackers/nine/stateblock9.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
>
> diff --git a/src/gallium/state_trackers/nine/stateblock9.c b/src/gallium/state_trackers/nine/stateblock9.c
> index ebfd622ff91..fd6f5d55677 100644
> --- a/src/gallium/state_trackers/nine/stateblock9.c
> +++ b/src/gallium/state_trackers/nine/stateblock9.c
> @@ -494,6 +494,16 @@ nine_state_copy_common_all(struct NineDevice9 *device,
>                   src->ff.num_transforms * sizeof(src->ff.transform[0]));
>               dst->ff.num_transforms = src->ff.num_transforms;
>           }
> +        /* Alloc and init missing transforms */
> +        if (dst->ff.num_transforms > src->ff.num_transforms) {
> +            int last_index = dst->ff.num_transforms - 1;
> +            /* There a hole in the indices we fill */
> +            if (last_index >= 10)
> +                last_index += D3DTS_WORLDMATRIX(0);
> +            (void) nine_state_access_transform((struct nine_ff_state *)&src->ff,
> +                                               last_index,
> +                                               TRUE);
> +        }
>           memcpy(dst->ff.transform,
>                  src->ff.transform, src->ff.num_transforms * sizeof(D3DMATRIX));
>           if (apply) /* TODO: memset */




More information about the mesa-dev mailing list