[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