diff options
author | Emil Velikov <emil.l.velikov@gmail.com> | 2014-02-18 03:43:14 +0000 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2014-04-28 19:11:27 +0100 |
commit | 748b35a69f4b4653ebe1e685ec4fae123d78c68a (patch) | |
tree | af6d5a363284551decc0c3aa1c236a5cf53e80b3 /src/mesa/drivers/dri/radeon/radeon_screen.c | |
parent | 38f20f79da4212c86d0869951f533d66a5ef907e (diff) |
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/mesa/drivers/dri/radeon/radeon_screen.c')
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_screen.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index dd940382be0..fe72b775228 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); |