summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/intel_screen.c
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2014-03-17 13:53:44 -0700
committerKenneth Graunke <kenneth@whitecape.org>2014-03-18 10:35:53 -0700
commit7a0fd3ca1d436591117d451ecee209a4cdb65aef (patch)
tree5aa3329ade2cf11cff4637db62a85d7fdf090d39 /src/mesa/drivers/dri/i965/intel_screen.c
parentb3e4b769dd318936abc38acbbbdec61ae2539e84 (diff)
downloadexternal_mesa3d-7a0fd3ca1d436591117d451ecee209a4cdb65aef.zip
external_mesa3d-7a0fd3ca1d436591117d451ecee209a4cdb65aef.tar.gz
external_mesa3d-7a0fd3ca1d436591117d451ecee209a4cdb65aef.tar.bz2
i965: Allocate register sets at screen creation, not context creation.
Register sets depend on the particular hardware generation, but don't depend on anything in the actual OpenGL context. Computing them is fairly expensive, and they take up a large amount of memory. Putting them in the screen allows us to compute/allocate them once for all contexts, saving both time and space. Improves the performance of a context creation/destruction microbenchmark by about 3x on my Haswell i7-4750HQ. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_screen.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_screen.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
index 3536922..4e9a775 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -1354,6 +1354,9 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
psp->extensions = !intelScreen->has_context_reset_notification
? intelScreenExtensions : intelRobustScreenExtensions;
+ brw_fs_alloc_reg_sets(intelScreen);
+ brw_vec4_alloc_reg_set(intelScreen);
+
return (const __DRIconfig**) intel_screen_make_configs(psp);
}