[Mesa-dev] [PATCH 56/84] st/nine: Add secondary pipe for device

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


The secondary pipe will be used for operations
that don't need synchronization.

Signed-off-by: Axel Davy <axel.davy at ens.fr>
---
 src/gallium/state_trackers/nine/device9.c | 4 +++-
 src/gallium/state_trackers/nine/device9.h | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c
index 8b4bd06..f659a27 100644
--- a/src/gallium/state_trackers/nine/device9.c
+++ b/src/gallium/state_trackers/nine/device9.c
@@ -193,7 +193,8 @@ NineDevice9_ctor( struct NineDevice9 *This,
         This->caps.MaxVertexShaderConst = NINE_MAX_CONST_F_SWVP;
 
     This->context.pipe = This->screen->context_create(This->screen, NULL, 0);
-    if (!This->context.pipe) { return E_OUTOFMEMORY; } /* guess */
+    This->pipe_secondary = This->screen->context_create(This->screen, NULL, 0);
+    if (!This->context.pipe || !This->pipe_secondary) { return E_OUTOFMEMORY; } /* guess */
     This->pipe_sw = This->screen_sw->context_create(This->screen_sw, NULL, 0);
     if (!This->pipe_sw) { return E_OUTOFMEMORY; }
 
@@ -574,6 +575,7 @@ NineDevice9_dtor( struct NineDevice9 *This )
     if (This->context.cso) { cso_destroy_context(This->context.cso); }
     if (This->cso_sw) { cso_destroy_context(This->cso_sw); }
     if (This->context.pipe && This->context.pipe->destroy) { This->context.pipe->destroy(This->context.pipe); }
+    if (This->pipe_secondary && This->pipe_secondary->destroy) { This->pipe_secondary->destroy(This->pipe_secondary); }
     if (This->pipe_sw && This->pipe_sw->destroy) { This->pipe_sw->destroy(This->pipe_sw); }
 
     if (This->present) { ID3DPresentGroup_Release(This->present); }
diff --git a/src/gallium/state_trackers/nine/device9.h b/src/gallium/state_trackers/nine/device9.h
index 4539cda..81c4ef9 100644
--- a/src/gallium/state_trackers/nine/device9.h
+++ b/src/gallium/state_trackers/nine/device9.h
@@ -53,6 +53,8 @@ struct NineDevice9
 
     /* G3D context */
     struct pipe_screen *screen;
+    /* For first time upload. No Sync with rendering thread */
+    struct pipe_context *pipe_secondary;
     struct pipe_screen *screen_sw;
     struct pipe_context *pipe_sw;
     struct cso_context *cso_sw;
-- 
2.10.2



More information about the mesa-dev mailing list