summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_pipe.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-10-13 15:22:04 +1000
committerDave Airlie <airlied@redhat.com>2010-10-13 15:25:00 +1000
commitd59498b78041b8a7a046ac2c892e7a1896f59ca2 (patch)
tree597aa39285bf7ea69603fff00c372fccf4d98528 /src/gallium/drivers/r600/r600_pipe.c
parent8c107e6ca619dd676e3697749a7d9b81ed19f46a (diff)
r600g: reduce size of context structure.
this thing will be in the cache a lot, so having massive big struct arrays inside it won't be helping anyone.
Diffstat (limited to 'src/gallium/drivers/r600/r600_pipe.c')
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
index 52fe3c777b..69bfb2a1a4 100644
--- a/src/gallium/drivers/r600/r600_pipe.c
+++ b/src/gallium/drivers/r600/r600_pipe.c
@@ -85,6 +85,10 @@ static void r600_destroy_context(struct pipe_context *context)
u_upload_destroy(rctx->upload_vb);
u_upload_destroy(rctx->upload_ib);
+ FREE(rctx->ps_resource);
+ FREE(rctx->vs_resource);
+ FREE(rctx->vs_const);
+ FREE(rctx->ps_const);
FREE(rctx);
}
@@ -171,6 +175,30 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
return NULL;
}
+ rctx->vs_const = CALLOC(R600_CONSTANT_ARRAY_SIZE, sizeof(struct r600_pipe_state));
+ if (!rctx->vs_const) {
+ FREE(rctx);
+ return NULL;
+ }
+
+ rctx->ps_const = CALLOC(R600_CONSTANT_ARRAY_SIZE, sizeof(struct r600_pipe_state));
+ if (!rctx->vs_const) {
+ FREE(rctx);
+ return NULL;
+ }
+
+ rctx->vs_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state));
+ if (!rctx->vs_resource) {
+ FREE(rctx);
+ return NULL;
+ }
+
+ rctx->ps_resource = CALLOC(R600_RESOURCE_ARRAY_SIZE, sizeof(struct r600_pipe_state));
+ if (!rctx->ps_resource) {
+ FREE(rctx);
+ return NULL;
+ }
+
class = r600_get_family_class(rctx->radeon);
if (class == R600 || class == R700)
rctx->custom_dsa_flush = r600_create_db_flush_dsa(rctx);