Part of the refactor to move all gallium calls to nine_state.c, and have all internal states required for those calls in nine_context.
Signed-off-by: Axel Davy <axel.d...@ens.fr> --- src/gallium/state_trackers/nine/nine_state.c | 32 +++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index 66b2814..31b9e9d 100644 --- a/src/gallium/state_trackers/nine/nine_state.c +++ b/src/gallium/state_trackers/nine/nine_state.c @@ -1244,23 +1244,39 @@ nine_context_set_stream_source_freq(struct NineDevice9 *device, context->changed.group |= NINE_STATE_STREAMFREQ; } +static void +nine_context_set_indices_apply(struct NineDevice9 *device, + struct pipe_resource *res, + UINT IndexSize, + UINT OffsetInBytes) +{ + struct nine_context *context = &device->context; + + context->idxbuf.index_size = IndexSize; + context->idxbuf.offset = OffsetInBytes; + pipe_resource_reference(&context->idxbuf.buffer, res); + context->idxbuf.user_buffer = NULL; + + context->changed.group |= NINE_STATE_IDXBUF; +} + void nine_context_set_indices(struct NineDevice9 *device, struct NineIndexBuffer9 *idxbuf) { - struct nine_context *context = &device->context; const struct pipe_index_buffer *pipe_idxbuf; + struct pipe_resource *res = NULL; + UINT IndexSize = 0; + UINT OffsetInBytes = 0; if (idxbuf) { pipe_idxbuf = NineIndexBuffer9_GetBuffer(idxbuf); - context->idxbuf.index_size = pipe_idxbuf->index_size; - pipe_resource_reference(&context->idxbuf.buffer, pipe_idxbuf->buffer); - context->idxbuf.offset = pipe_idxbuf->offset; - context->idxbuf.user_buffer = NULL; - } else - pipe_resource_reference(&context->idxbuf.buffer, NULL); + IndexSize = pipe_idxbuf->index_size; + res = pipe_idxbuf->buffer; + OffsetInBytes = pipe_idxbuf->offset; + } - context->changed.group |= NINE_STATE_IDXBUF; + nine_context_set_indices_apply(device, res, IndexSize, OffsetInBytes); } void -- 2.10.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev