[Mesa-dev] [PATCH 37/84] st/nine: Decompose nine_context_set_indices

Axel Davy axel.davy at ens.fr
Wed Dec 7 22:55:10 UTC 2016


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.davy at 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



More information about the mesa-dev mailing list