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

Roland Scheidegger sroland at vmware.com
Mon Jun 23 08:06:18 PDT 2014


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

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