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

Roland Scheidegger sroland at vmware.com
Mon Jun 23 03:49:38 PDT 2014


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.

Roland


More information about the mesa-dev mailing list