summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/intel
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2007-11-15 09:59:33 +0000
committerMichel Dänzer <michel@tungstengraphics.com>2007-11-26 17:49:29 +0100
commita8fee3a498c8c4966d57a5273408477f3aa3ce73 (patch)
tree32cf888e1f5214bd310713df65a948286a9dc20c /src/mesa/drivers/dri/intel
parent63e6bfe8db10313c7f48de0b8ddbcd6b47f7e327 (diff)
i915: Catch cases where not all state is emitted for a new batchbuffer.
This could lead to incorrect rendering or even lockups.
Diffstat (limited to 'src/mesa/drivers/dri/intel')
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.c2
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.h3
-rw-r--r--src/mesa/drivers/dri/intel/intel_screen.h2
3 files changed, 7 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
index 4e698627a3..3764027bff 100644
--- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c
+++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c
@@ -85,6 +85,8 @@ intel_batchbuffer_reset(struct intel_batchbuffer *batch)
batch->map = batch->buf->virtual;
batch->size = intel->intelScreen->maxBatchSize;
batch->ptr = batch->map;
+ batch->dirty_state = ~0;
+ batch->id = batch->intel->intelScreen->batch_id++;
}
struct intel_batchbuffer *
diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.h b/src/mesa/drivers/dri/intel/intel_batchbuffer.h
index b5c7a783a7..1bbbbde293 100644
--- a/src/mesa/drivers/dri/intel/intel_batchbuffer.h
+++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.h
@@ -25,6 +25,9 @@ struct intel_batchbuffer
GLubyte *ptr;
GLuint size;
+
+ GLuint dirty_state;
+ GLuint id;
};
struct intel_batchbuffer *intel_batchbuffer_alloc(struct intel_context
diff --git a/src/mesa/drivers/dri/intel/intel_screen.h b/src/mesa/drivers/dri/intel/intel_screen.h
index 3a1a969b23..ac11431b87 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.h
+++ b/src/mesa/drivers/dri/intel/intel_screen.h
@@ -98,6 +98,8 @@ typedef struct
* instead of the fake client-side memory manager.
*/
GLboolean ttm;
+
+ unsigned batch_id;
} intelScreenPrivate;