summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmil Velikov <emil.l.velikov@gmail.com>2014-02-18 03:43:14 +0000
committerEmil Velikov <emil.l.velikov@gmail.com>2014-04-28 19:11:27 +0100
commit748b35a69f4b4653ebe1e685ec4fae123d78c68a (patch)
treeaf6d5a363284551decc0c3aa1c236a5cf53e80b3 /src
parent38f20f79da4212c86d0869951f533d66a5ef907e (diff)
downloadexternal_mesa3d-748b35a69f4b4653ebe1e685ec4fae123d78c68a.zip
external_mesa3d-748b35a69f4b4653ebe1e685ec4fae123d78c68a.tar.gz
external_mesa3d-748b35a69f4b4653ebe1e685ec4fae123d78c68a.tar.bz2
dri/radeon: use a const __DRIextension array
Rather than keeping a separate and unused copy of the screen extensions within the radeon screen, use a constant array that can be used directly with __DRIscreen. [Kristian Høgsberg] The copy in the radeon screen isn't unused, that's where the array is built and stored, the dri screen just points to that. The pattern here was used for cases where the extensions exported by a dri driver could vary at runtime, for example depending on chipset. In this case, it's known at compile time, so it makes sense to use a static const array instead. Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c29
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.h2
2 files changed, 14 insertions, 17 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index dd94038..fe72b77 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -481,11 +481,23 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id)
return 0;
}
+
+static const __DRIextension *radeon_screen_extensions[] = {
+ &dri2ConfigQueryExtension.base,
+#if defined(RADEON_R100)
+ &radeonTexBufferExtension.base,
+#elif defined(RADEON_R200)
+ &r200TexBufferExtension.base,
+#endif
+ &radeonFlushExtension.base,
+ &radeonImageExtension.base,
+ NULL
+};
+
static radeonScreenPtr
radeonCreateScreen2(__DRIscreen *sPriv)
{
radeonScreenPtr screen;
- int i;
int ret;
uint32_t device_id = 0;
@@ -522,20 +534,7 @@ radeonCreateScreen2(__DRIscreen *sPriv)
if (getenv("RADEON_NO_TCL"))
screen->chip_flags &= ~RADEON_CHIPSET_TCL;
- i = 0;
- screen->extensions[i++] = &dri2ConfigQueryExtension.base;
-
-#if defined(RADEON_R100)
- screen->extensions[i++] = &radeonTexBufferExtension.base;
-#elif defined(RADEON_R200)
- screen->extensions[i++] = &r200TexBufferExtension.base;
-#endif
-
- screen->extensions[i++] = &radeonFlushExtension.base;
- screen->extensions[i++] = &radeonImageExtension.base;
-
- screen->extensions[i++] = NULL;
- sPriv->extensions = screen->extensions;
+ sPriv->extensions = radeon_screen_extensions;
screen->driScreen = sPriv;
screen->bom = radeon_bo_manager_gem_ctor(sPriv->fd);
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.h b/src/mesa/drivers/dri/radeon/radeon_screen.h
index 03abb2a..76fa1ec 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.h
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.h
@@ -97,8 +97,6 @@ typedef struct radeon_screen {
/* Configuration cache with default values for all contexts */
driOptionCache optionCache;
- const __DRIextension *extensions[17];
-
int num_gb_pipes;
int num_z_pipes;
drm_radeon_sarea_t *sarea; /* Private SAREA data */