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.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -100,6 +100,9 @@ struct r600_textures_info {
|
||||
unsigned n_samplers;
|
||||
};
|
||||
|
||||
#define R600_CONSTANT_ARRAY_SIZE 256
|
||||
#define R600_RESOURCE_ARRAY_SIZE 160
|
||||
|
||||
struct r600_pipe_context {
|
||||
struct pipe_context context;
|
||||
struct blitter_context *blitter;
|
||||
@@ -122,10 +125,10 @@ struct r600_pipe_context {
|
||||
struct pipe_clip_state clip;
|
||||
unsigned vs_nconst;
|
||||
unsigned ps_nconst;
|
||||
struct r600_pipe_state vs_const[256];
|
||||
struct r600_pipe_state ps_const[256];
|
||||
struct r600_pipe_state vs_resource[160];
|
||||
struct r600_pipe_state ps_resource[160];
|
||||
struct r600_pipe_state *vs_const;
|
||||
struct r600_pipe_state *ps_const;
|
||||
struct r600_pipe_state *vs_resource;
|
||||
struct r600_pipe_state *ps_resource;
|
||||
struct r600_pipe_state config;
|
||||
struct r600_pipe_shader *ps_shader;
|
||||
struct r600_pipe_shader *vs_shader;
|
||||
|
||||
Reference in New Issue
Block a user