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

Roland Scheidegger sroland at vmware.com
Mon Jun 23 09:01:46 PDT 2014


Am 23.06.2014 17:18, schrieb Ilia Mirkin:
> 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.
Yes it should be - the viewport should be set somewhere (I'm not exactly
sure where it gets set) and since in GL the "old" commands just set all
viewports this should work.

> 
>> 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.
Well I suspect for most hw it should still work (even if technically
undefined in GL) due to d3d10 requirements which hw is likely to follow
in any case. It definitely should work in llvmpipe.

Roland


>>
>> 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