[Mesa-dev] [PATCH v2 3/3] mesa/st: enable ARB_fragment_layer_viewport

Ilia Mirkin imirkin at alum.mit.edu
Mon Jun 23 08:18:34 PDT 2014


On Mon, Jun 23, 2014 at 11:06 AM, Roland Scheidegger <sroland at vmware.com> wrote:
> Am 23.06.2014 16:43, schrieb Ilia Mirkin:
>> On Mon, Jun 23, 2014 at 9:51 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>> On Mon, Jun 23, 2014 at 9:39 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>>>> If multiple viewports are supported, that implies the presence of a GS
>>>> and layered rendering, so we can enable ARB_fragment_layer_viewport as
>>>> well.
>>>>
>>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>>> ---
>>>>
>>>> Untested on r600, but nv50/nvc0/llvmpipe seem to pass basic testing.
>>>
>>> Grr... actually llvmpipe fails for viewport, but works for layer.
>>
>> But... it draws all black instead of red, which means it's probably
>> either my or llvmpipe's understanding of default viewport state that's
>> wrong. I assumed that by default viewports were initialized s.t. they
>> would "Just Work" without having to be touched. Or... it's not
>> clamping the viewport index properly. Will investigate later.
> Hmm I'm not sure. This was tested with d3d10 rules which of course
> doesn't have the commands to set all viewports at once. But this is
> handled by the state tracker.

Well, the tests don't set viewports at all. I was under the
(potentially incorrect) assumption that the default state was good
enough.

> The index of the viewport itself isn't clamped but set to to zero if it
> exceeds 16 (PIPE_MAX_VIEWPORTS) but only for the actual selection of the
> viewport, again this is required by d3d10. GL has undefined results
> there so this should be ok (and hw will do near certainly the same
> anyway). The value you get in the fragment shader though will NOT be
> clamped, which as far as I can tell is required by both d3d10 and GL.
> But of course there could always be some other bug...

Bleh. Well, if GL has undefined rendering results for invalid
gl_ViewportIndex, then my viewport test won't work -- it checks
various out-of-bounds values. I'll scale it back to only testing legal
values.

>
> Roland
>
>>
>> If someone with r600g could test this series out with the 2 piglit
>> tests I sent to piglit@, that'd be great
>> (https://urldefense.proofpoint.com/v1/url?u=http://patchwork.freedesktop.org/patch/28375/&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=F4msKE2WxRzA%2BwN%2B25muztFm5TSPwE8HKJfWfR2NgfY%3D%0A&m=J%2BXkuCJ6cA3U%2F2geD8pCPdQJ3h9Cu5xb%2BmaqRqBDoq4%3D%0A&s=67e6d3d7200289af788142c217a7c1cb598ccbeb7122ec52a358f60ffd98be2d -- no actual deps on
>> chrisf's series if you run them directly via shader_runner.)
>>
>>>
>>>>
>>>>  docs/GL3.txt                           | 2 +-
>>>>  docs/relnotes/10.3.html                | 1 +
>>>>  src/mesa/state_tracker/st_extensions.c | 1 +
>>>>  3 files changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/docs/GL3.txt b/docs/GL3.txt
>>>> index 47165fe..ab90997 100644
>>>> --- a/docs/GL3.txt
>>>> +++ b/docs/GL3.txt
>>>> @@ -161,7 +161,7 @@ GL 4.3:
>>>>    GL_ARB_copy_image                                    not started
>>>>    GL_KHR_debug                                         DONE (all drivers)
>>>>    GL_ARB_explicit_uniform_location                     DONE (all drivers that support GLSL)
>>>> -  GL_ARB_fragment_layer_viewport                       not started
>>>> +  GL_ARB_fragment_layer_viewport                       DONE (nv50, nvc0, r600)
>>>>    GL_ARB_framebuffer_no_attachments                    not started
>>>>    GL_ARB_internalformat_query2                         not started
>>>>    GL_ARB_invalidate_subdata                            DONE (all drivers)
>>>> diff --git a/docs/relnotes/10.3.html b/docs/relnotes/10.3.html
>>>> index ecc8580..99e0311 100644
>>>> --- a/docs/relnotes/10.3.html
>>>> +++ b/docs/relnotes/10.3.html
>>>> @@ -53,6 +53,7 @@ Note: some of the new features are only available with certain drivers.
>>>>  <li>GL_ARB_texture_query_levels on nv50, nvc0, llvmpipe, r600, radeonsi, softpipe</li>
>>>>  <li>GL_ARB_texture_query_lod on radeonsi</li>
>>>>  <li>GL_ARB_viewport_array on nvc0</li>
>>>> +<li>GL_ARB_fragment_layer_viewport on nv50, nvc0, llvmpipe, r600</li>
>>>>  </ul>
>>>>
>>>>
>>>> diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
>>>> index e938046..8cd6aa3 100644
>>>> --- a/src/mesa/state_tracker/st_extensions.c
>>>> +++ b/src/mesa/state_tracker/st_extensions.c
>>>> @@ -809,6 +809,7 @@ void st_init_extensions(struct st_context *st)
>>>>           ctx->Const.ViewportBounds.Min = -16384.0;
>>>>           ctx->Const.ViewportBounds.Max = 16384.0;
>>>>           ctx->Extensions.ARB_viewport_array = GL_TRUE;
>>>> +         ctx->Extensions.ARB_fragment_layer_viewport = GL_TRUE;
>>>>        }
>>>>     }
>>>>     if (ctx->Const.MaxProgramTextureGatherComponents > 0)
>>>> --
>>>> 1.8.5.5
>>>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/mesa-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=F4msKE2WxRzA%2BwN%2B25muztFm5TSPwE8HKJfWfR2NgfY%3D%0A&m=J%2BXkuCJ6cA3U%2F2geD8pCPdQJ3h9Cu5xb%2BmaqRqBDoq4%3D%0A&s=a6d6c596fee80884f66960766ae2d42d9f8426eabc4a352bc48ed38e5bb811e2
>>


More information about the mesa-dev mailing list