st/nine: Decompose nine_context_set_indices
authorAxel Davy <axel.davy@ens.fr>
Tue, 1 Nov 2016 15:38:57 +0000 (16:38 +0100)
committerAxel Davy <axel.davy@ens.fr>
Tue, 20 Dec 2016 22:44:22 +0000 (23:44 +0100)
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@ens.fr>
src/gallium/state_trackers/nine/nine_state.c

index 2a059d928e03e94ebc8e6b72adb5c5c0f7ba672b..2dabd4b13799095f099034c3fa9e8ddf8de0edef 100644 (file)
@@ -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