[Mesa-dev] [PATCH 1/7] gallium: Add PIPE_CAP_FRAMEBUFFER_LAYERS

Nicolai Hähnle nhaehnle at gmail.com
Wed Feb 3 09:36:21 UTC 2016


On 31.01.2016 15:11, Ilia Mirkin wrote:
> This seems odd. When would this not just be MaxArrayTextureLayers? IMO
> a plain enable cap, like PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENTS makes
> more sense here.

 From the GL_ARB_framebuffer_no_attachments spec overview:

Additionally, this extension provides queryable implementation-dependent 
maximums for framebuffer width, height, layer count, and sample count, 
which may differ from similar limits on textures and renderbuffers. 
These maximums will be used to error-check the default framebuffer 
parameters and also permit implementations to expose the ability to 
rasterize to an attachment-less framebuffer larger than the maximum 
supported texture size.

So having a Gallium cap that corresponds to GL_MAX_FRAMEBUFFER_LAYERS is 
not entirely silly. One could even argue that there should be caps for 
the other MAX_FRAMEBUFFER_* values as well...

Cheers,
Nicolai

> On Sun, Jan 31, 2016 at 1:25 AM, Edward O'Callaghan
> <eocallaghan at alterapraxis.com> wrote:
>> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
>> index d066784..99105bd 100644
>> --- a/src/mesa/state_tracker/st_extensions.c
>> +++ b/src/mesa/state_tracker/st_extensions.c
>> @@ -490,6 +490,7 @@ void st_init_extensions(struct pipe_screen *screen,
>>         { o(ARB_fragment_program_shadow),      PIPE_CAP_TEXTURE_SHADOW_MAP               },
>>         { o(ARB_framebuffer_object),           PIPE_CAP_MIXED_FRAMEBUFFER_SIZES          },
>>         { o(ARB_indirect_parameters),          PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS       },
>> +      { o(ARB_framebuffer_no_attachments),   PIPE_CAP_MAX_FRAMEBUFFER_LAYERS           },
>>         { o(ARB_instanced_arrays),             PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR  },
>>         { o(ARB_occlusion_query),              PIPE_CAP_OCCLUSION_QUERY                  },
>>         { o(ARB_occlusion_query2),             PIPE_CAP_OCCLUSION_QUERY                  },
>> @@ -962,6 +963,18 @@ void st_init_extensions(struct pipe_screen *screen,
>>            extensions->AMD_vertex_shader_viewport_index = GL_TRUE;
>>      }
>>
>> +   /* ARB_framebuffer_no_attachments */
>> +   consts->MaxFramebufferWidth   = consts->MaxViewportWidth;
>> +   consts->MaxFramebufferHeight  = consts->MaxViewportHeight;
>> +   consts->MaxFramebufferSamples = consts->MaxSamples;
>> +   consts->MaxFramebufferLayers
>> +      = screen->get_param(screen, PIPE_CAP_MAX_FRAMEBUFFER_LAYERS);
>> +   if ((consts->MaxSamples >= 4 && consts->MaxFramebufferLayers >= 2048)
>> +      || (consts->MaxFramebufferSamples >= consts->MaxSamples &&
>> +          consts->MaxFramebufferLayers  >= consts->MaxArrayTextureLayers))
>> +      extensions->ARB_framebuffer_no_attachments = GL_TRUE;
>
> You don't want both of these... either you want to just enable the ext
> when the cap is on, or you want to enable the ext under certain more
> complex conditions.
>
>    -ilia
> _______________________________________________
> 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