summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAxel Davy <[email protected]>2016-11-03 22:12:01 +0100
committerAxel Davy <[email protected]>2016-12-20 23:44:23 +0100
commit3e8234fff42022b12ff7bdbff052c75c71f5bedb (patch)
treebaa2f38522dd0a6cbcd372c9f630c1ac664103b5 /src
parent7a7eeefd7dd858682244e43eb5cb0d2c84fb0b07 (diff)
st/nine: Add secondary pipe for device
The secondary pipe will be used for operations that don't need synchronization. Signed-off-by: Axel Davy <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/state_trackers/nine/device9.c4
-rw-r--r--src/gallium/state_trackers/nine/device9.h2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c
index 2b60280c4dd..271aa2b6b9f 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 4539cda18a6..81c4ef97f41 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;