From: Axel Davy Date: Fri, 2 Jan 2015 13:38:01 +0000 (+0100) Subject: st/nine: Allocate the correct size for the user constant buffer X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e0f75044c8d2793b6a5bd9832c57c5d199822486;p=mesa.git st/nine: Allocate the correct size for the user constant buffer Reviewed-by: Ilia Mirkin Signed-off-by: Axel Davy Cc: "10.4" --- diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c index 2d5a7f6a810..dae7bd45767 100644 --- a/src/gallium/state_trackers/nine/device9.c +++ b/src/gallium/state_trackers/nine/device9.c @@ -62,7 +62,7 @@ NineDevice9_SetDefaultState( struct NineDevice9 *This, boolean is_reset ) assert(!This->is_recording); - nine_state_set_defaults(&This->state, &This->caps, is_reset); + nine_state_set_defaults(This, &This->caps, is_reset); This->state.viewport.X = 0; This->state.viewport.Y = 0; @@ -265,8 +265,8 @@ NineDevice9_ctor( struct NineDevice9 *This, This->vs_const_size = max_const_vs * sizeof(float[4]); This->ps_const_size = max_const_ps * sizeof(float[4]); /* Include space for I,B constants for user constbuf. */ - This->state.vs_const_f = CALLOC(NINE_MAX_CONST_ALL, sizeof(float[4])); - This->state.ps_const_f = CALLOC(NINE_MAX_CONST_ALL, sizeof(float[4])); + This->state.vs_const_f = CALLOC(This->vs_const_size, 1); + This->state.ps_const_f = CALLOC(This->ps_const_size, 1); if (!This->state.vs_const_f || !This->state.ps_const_f) return E_OUTOFMEMORY; diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index b05e67ecd01..e019dfb0f41 100644 --- a/src/gallium/state_trackers/nine/nine_state.c +++ b/src/gallium/state_trackers/nine/nine_state.c @@ -999,9 +999,10 @@ static const DWORD nine_samp_state_defaults[NINED3DSAMP_LAST + 1] = [NINED3DSAMP_SHADOW] = 0 }; void -nine_state_set_defaults(struct nine_state *state, const D3DCAPS9 *caps, +nine_state_set_defaults(struct NineDevice9 *device, const D3DCAPS9 *caps, boolean is_reset) { + struct nine_state *state = &device->state; unsigned s; /* Initialize defaults. @@ -1022,9 +1023,9 @@ nine_state_set_defaults(struct nine_state *state, const D3DCAPS9 *caps, } if (state->vs_const_f) - memset(state->vs_const_f, 0, NINE_MAX_CONST_F * 4 * sizeof(float)); + memset(state->vs_const_f, 0, device->vs_const_size); if (state->ps_const_f) - memset(state->ps_const_f, 0, NINE_MAX_CONST_F * 4 * sizeof(float)); + memset(state->ps_const_f, 0, device->ps_const_size); /* Cap dependent initial state: */ diff --git a/src/gallium/state_trackers/nine/nine_state.h b/src/gallium/state_trackers/nine/nine_state.h index 3e0162c9dfc..742c6f67425 100644 --- a/src/gallium/state_trackers/nine/nine_state.h +++ b/src/gallium/state_trackers/nine/nine_state.h @@ -218,7 +218,7 @@ struct NineDevice9; boolean nine_update_state(struct NineDevice9 *, uint32_t group_mask); -void nine_state_set_defaults(struct nine_state *, const D3DCAPS9 *, +void nine_state_set_defaults(struct NineDevice9 *, const D3DCAPS9 *, boolean is_reset); void nine_state_clear(struct nine_state *, const boolean device);