On Wed, Jan 7, 2015 at 11:36 AM, Axel Davy <axel.d...@ens.fr> wrote: > Signed-off-by: Axel Davy <axel.d...@ens.fr> > Cc: "10.4" <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/state_trackers/nine/device9.c | 10 ++++++---- > src/gallium/state_trackers/nine/device9.h | 2 ++ > src/gallium/state_trackers/nine/stateblock9.c | 4 ++-- > 3 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/src/gallium/state_trackers/nine/device9.c > b/src/gallium/state_trackers/nine/device9.c > index 5d1a507..cae9239 100644 > --- a/src/gallium/state_trackers/nine/device9.c > +++ b/src/gallium/state_trackers/nine/device9.c > @@ -109,7 +109,7 @@ NineDevice9_RestoreNonCSOState( struct NineDevice9 *This, > unsigned mask ) > cb.buffer = This->constbuf_vs; > cb.user_buffer = NULL; > } > - cb.buffer_size = This->constbuf_vs->width0; > + cb.buffer_size = This->vs_const_size; > pipe->set_constant_buffer(pipe, PIPE_SHADER_VERTEX, 0, &cb); > > if (This->prefer_user_constbuf) { > @@ -117,7 +117,7 @@ NineDevice9_RestoreNonCSOState( struct NineDevice9 *This, > unsigned mask ) > } else { > cb.buffer = This->constbuf_ps; > } > - cb.buffer_size = This->constbuf_ps->width0; > + cb.buffer_size = This->ps_const_size; > pipe->set_constant_buffer(pipe, PIPE_SHADER_FRAGMENT, 0, &cb); > } > > @@ -262,6 +262,8 @@ NineDevice9_ctor( struct NineDevice9 *This, > This->max_ps_const_f = max_const_ps - > (NINE_MAX_CONST_I + NINE_MAX_CONST_B / 4); > > + 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])); > @@ -283,10 +285,10 @@ NineDevice9_ctor( struct NineDevice9 *This, > tmpl.bind = PIPE_BIND_CONSTANT_BUFFER; > tmpl.flags = 0; > > - tmpl.width0 = max_const_vs * sizeof(float[4]); > + tmpl.width0 = This->vs_const_size; > This->constbuf_vs = pScreen->resource_create(pScreen, &tmpl); > > - tmpl.width0 = max_const_ps * sizeof(float[4]); > + tmpl.width0 = This->ps_const_size; > This->constbuf_ps = pScreen->resource_create(pScreen, &tmpl); > > if (!This->constbuf_vs || !This->constbuf_ps) > diff --git a/src/gallium/state_trackers/nine/device9.h > b/src/gallium/state_trackers/nine/device9.h > index cf2138a..65e39f0 100644 > --- a/src/gallium/state_trackers/nine/device9.h > +++ b/src/gallium/state_trackers/nine/device9.h > @@ -77,6 +77,8 @@ struct NineDevice9 > > struct pipe_resource *constbuf_vs; > struct pipe_resource *constbuf_ps; > + uint16_t vs_const_size; > + uint16_t ps_const_size;
Does something limit these? nv50/nvc0 will report a 64K buffer which will cause this to wrap. > uint16_t max_vs_const_f; > uint16_t max_ps_const_f;; > > diff --git a/src/gallium/state_trackers/nine/stateblock9.c > b/src/gallium/state_trackers/nine/stateblock9.c > index 36b5e77..220b196 100644 > --- a/src/gallium/state_trackers/nine/stateblock9.c > +++ b/src/gallium/state_trackers/nine/stateblock9.c > @@ -43,8 +43,8 @@ NineStateBlock9_ctor( struct NineStateBlock9 *This, > > This->type = type; > > - This->state.vs_const_f = MALLOC(pParams->device->constbuf_vs->width0); > - This->state.ps_const_f = MALLOC(pParams->device->constbuf_ps->width0); > + This->state.vs_const_f = MALLOC(This->base.device->vs_const_size); > + This->state.ps_const_f = MALLOC(This->base.device->ps_const_size); > if (!This->state.vs_const_f || !This->state.ps_const_f) > return E_OUTOFMEMORY; > > -- > 2.1.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev