[Mesa-dev] [PATCH 03/16] dri/radeon: use a const __DRIextension array
Emil Velikov
emil.l.velikov at gmail.com
Fri Apr 25 11:32:39 PDT 2014
On 25/04/14 18:53, Kristian Høgsberg wrote:
> On Sun, Mar 16, 2014 at 6:48 AM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
>> 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.
>
> 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.
>
Good to know I'll update the commit message to reflect reality.
Cheers,
Emil
> Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>
>
>> Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
>> ---
>> src/mesa/drivers/dri/radeon/radeon_screen.c | 29 ++++++++++++++---------------
>> src/mesa/drivers/dri/radeon/radeon_screen.h | 2 --
>> 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 */
>> --
>> 1.9.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list