[Mesa-dev] [PATCH 4/4] nvc0: enable ARB_fragment_layer_viewport

Ilia Mirkin imirkin at alum.mit.edu
Mon Jun 23 15:27:37 PDT 2014


Well, with Roland's fix to the draw module, llvmpipe works with my
tests as well. Is it likely that r600 will work as-is, or do you think
it'll require some fixes? I can try to find someone with the requisite
hw...

On Mon, Jun 23, 2014 at 4:57 PM, Marek Olšák <maraeo at gmail.com> wrote:
> The cap can be removed later if needed.
>
> Marek
>
> On Mon, Jun 23, 2014 at 2:50 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
>> On Mon, Jun 23, 2014 at 7:55 AM, Roland Scheidegger <sroland at vmware.com> wrote:
>>> Am 23.06.2014 12:49, schrieb Roland Scheidegger:
>>>> Am 22.06.2014 17:10, schrieb Ilia Mirkin:
>>>>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>>>>> ---
>>>>>  docs/GL3.txt                                    | 2 +-
>>>>>  docs/relnotes/10.3.html                         | 2 +-
>>>>>  src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 2 ++
>>>>>  src/gallium/drivers/nouveau/nvc0/nvc0_screen.c  | 2 +-
>>>>>  4 files changed, 5 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/docs/GL3.txt b/docs/GL3.txt
>>>>> index c47a54b..8cfa247 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                       DONE (nv50)
>>>>> +  GL_ARB_fragment_layer_viewport                       DONE (nv50, nvc0)
>>>>>    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 5e29f2d..b65e347 100644
>>>>> --- a/docs/relnotes/10.3.html
>>>>> +++ b/docs/relnotes/10.3.html
>>>>> @@ -53,7 +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</li>
>>>>> +<li>GL_ARB_fragment_layer_viewport on nv50, nvc0</li>
>>>>>  </ul>
>>>>>
>>>>>
>>>>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
>>>>> index 667fbc8..ad8d1b0 100644
>>>>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
>>>>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
>>>>> @@ -36,6 +36,8 @@ nvc0_shader_input_address(unsigned sn, unsigned si, unsigned ubase)
>>>>>     switch (sn) {
>>>>>     case NV50_SEMANTIC_TESSFACTOR:   return 0x000 + si * 0x4;
>>>>>     case TGSI_SEMANTIC_PRIMID:       return 0x060;
>>>>> +   case TGSI_SEMANTIC_LAYER:        return 0x064;
>>>>> +   case TGSI_SEMANTIC_VIEWPORT_INDEX:return 0x068;
>>>>>     case TGSI_SEMANTIC_PSIZE:        return 0x06c;
>>>>>     case TGSI_SEMANTIC_POSITION:     return 0x070;
>>>>>     case TGSI_SEMANTIC_GENERIC:      return ubase + si * 0x10;
>>>>> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>>>>> index 2c8f1ca..c02e10a 100644
>>>>> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>>>>> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
>>>>> @@ -164,6 +164,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>>>>>     case PIPE_CAP_SAMPLE_SHADING:
>>>>>     case PIPE_CAP_TEXTURE_GATHER_OFFSETS:
>>>>>     case PIPE_CAP_TEXTURE_GATHER_SM5:
>>>>> +   case PIPE_CAP_TGSI_FS_LAYER_VIEWPORT:
>>>>>        return 1;
>>>>>     case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
>>>>>        return (class_3d >= NVE4_3D_CLASS) ? 1 : 0;
>>>>> @@ -181,7 +182,6 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
>>>>>     case PIPE_CAP_TGSI_VS_LAYER:
>>>>>     case PIPE_CAP_FAKE_SW_MSAA:
>>>>>     case PIPE_CAP_TGSI_VS_WINDOW_SPACE_POSITION:
>>>>> -   case PIPE_CAP_TGSI_FS_LAYER_VIEWPORT:
>>>>>        return 0;
>>>>>     }
>>>>>
>>>>>
>>>>
>>>> Is that cap bit really required? Everybody who can do layered viewports
>>>> ought to be able to do this (as it's required by d3d10). Though I can't
>>>> say if right now all drivers which support layered viewports can already
>>>> do it (llvmpipe can), but it might be trivial to fix those up which can't.
>>>>
>>>
>>> (Of course that should have been layered fbs and multiple viewports,
>>> that short-notation I used there doesn't make much sense...)
>>
>> Well, I think right now the only drivers that support multiple
>> viewports are llvmpipe, nv50, nvc0, and r600. I can test out llvmpipe
>> but would need some help for r600. Would love not to have to add the
>> cap :)
>>
>>   -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