summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/nouveau/nouveau_context.h
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2010-02-17 18:56:42 +0100
committerFrancisco Jerez <currojerez@riseup.net>2010-02-17 23:36:29 +0100
commit56dcd011b5ec33190f268cf546a4c68f81f5ebd0 (patch)
tree9d617916a5a9442435a935ea55ed2b9c9130609b /src/mesa/drivers/dri/nouveau/nouveau_context.h
parent52e3f0949d47c846e3508a135afd75c439f2c49d (diff)
downloadexternal_mesa3d-56dcd011b5ec33190f268cf546a4c68f81f5ebd0.zip
external_mesa3d-56dcd011b5ec33190f268cf546a4c68f81f5ebd0.tar.gz
external_mesa3d-56dcd011b5ec33190f268cf546a4c68f81f5ebd0.tar.bz2
dri/nouveau: Some multithreaded rendering fixes.
Diffstat (limited to 'src/mesa/drivers/dri/nouveau/nouveau_context.h')
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_context.h24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h
index 9812963..efe3e51 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h
@@ -40,6 +40,22 @@ enum nouveau_fallback {
SWRAST,
};
+struct nouveau_hw_state {
+ struct nouveau_channel *chan;
+
+ struct nouveau_notifier *ntfy;
+ struct nouveau_grobj *eng3d;
+ struct nouveau_grobj *eng3dm;
+ struct nouveau_grobj *surf3d;
+ struct nouveau_grobj *m2mf;
+ struct nouveau_grobj *surf2d;
+ struct nouveau_grobj *rop;
+ struct nouveau_grobj *patt;
+ struct nouveau_grobj *rect;
+ struct nouveau_grobj *swzsurf;
+ struct nouveau_grobj *sifm;
+};
+
struct nouveau_drawable_state {
GLboolean dirty;
unsigned int d_stamp;
@@ -54,6 +70,7 @@ struct nouveau_context {
BITSET_DECLARE(dirty, MAX_NOUVEAU_STATE);
enum nouveau_fallback fallback;
+ struct nouveau_hw_state hw;
struct nouveau_bo_state bo;
struct nouveau_render_state render;
struct nouveau_drawable_state drawable;
@@ -66,9 +83,9 @@ struct nouveau_context {
#define context_chipset(ctx) \
(context_dev(ctx)->chipset)
#define context_chan(ctx) \
- (to_nouveau_context(ctx)->screen->chan)
+ (to_nouveau_context(ctx)->hw.chan)
#define context_eng3d(ctx) \
- (to_nouveau_context(ctx)->screen->eng3d)
+ (to_nouveau_context(ctx)->hw.eng3d)
#define context_drv(ctx) \
(to_nouveau_context(ctx)->screen->driver)
#define context_dirty(ctx, s) \
@@ -85,6 +102,9 @@ nouveau_context_init(GLcontext *ctx, struct nouveau_screen *screen,
const GLvisual *visual, GLcontext *share_ctx);
void
+nouveau_context_deinit(GLcontext *ctx);
+
+void
nouveau_context_destroy(__DRIcontext *dri_ctx);
GLboolean