summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/svga/svga_context.h
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2011-04-07 16:54:37 +0100
committerJosé Fonseca <[email protected]>2011-04-12 12:00:49 +0100
commit6b95cfb0de1bcd680679a20d6ecc32b42e5d1546 (patch)
treefb09be44e1bc379cf25aab685fdc8cdff7a570b8 /src/gallium/drivers/svga/svga_context.h
parente338a1b0cea94f8c57968b01eebd795c6c8ce74e (diff)
svga: Rebind framebuffer and tss bindings strictly when necessary.
The earlier change to ensure rendertargets and textures are always rebound at every command buffer start had the downside of making successive flushes no longer no-ops, as a command buffer with merely the rebinding commands were being unnecessarily sent to the vGPU. This change only re-emits the bindings when necessary, by keeping track of the need to rebind outside of the dirty state update mechanism.
Diffstat (limited to 'src/gallium/drivers/svga/svga_context.h')
-rw-r--r--src/gallium/drivers/svga/svga_context.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h
index 7b36a3606e0..eca529d262e 100644
--- a/src/gallium/drivers/svga/svga_context.h
+++ b/src/gallium/drivers/svga/svga_context.h
@@ -358,6 +358,11 @@ struct svga_context
struct svga_state curr; /* state from the state tracker */
unsigned dirty; /* statechanges since last update_state() */
+ struct {
+ unsigned rendertargets:1;
+ unsigned texture_samplers:1;
+ } rebind;
+
struct u_upload_mgr *upload_ib;
struct u_upload_mgr *upload_vb;
struct svga_hwtnl *hwtnl;
@@ -402,7 +407,6 @@ struct svga_context
#define SVGA_NEW_ZERO_STRIDE 0x2000000
#define SVGA_NEW_TEXTURE_FLAGS 0x4000000
#define SVGA_NEW_STENCIL_REF 0x8000000
-#define SVGA_NEW_COMMAND_BUFFER 0x10000000