From: Axel Davy Date: Tue, 1 Nov 2016 15:38:57 +0000 (+0100) Subject: st/nine: Decompose nine_context_set_indices X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=69f447752debda137498c9891ffcbc15a3db301a;p=mesa.git st/nine: Decompose nine_context_set_indices 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 --- diff --git a/src/gallium/state_trackers/nine/nine_state.c b/src/gallium/state_trackers/nine/nine_state.c index 2a059d928e0..2dabd4b1379 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