[Nouveau] [RFC PATCH 00/11] Implement ARB_cull_distance

Ilia Mirkin imirkin at alum.mit.edu
Sun May 24 12:36:15 PDT 2015


On Sun, May 24, 2015 at 3:30 PM, Tobias Klausmann
<tobias.johannes.klausmann at mni.thm.de> wrote:
>
>
> On 24.05.2015 20:25, Ilia Mirkin wrote:
>>
>> I'm having a bit of trouble tracing through this. What happens if I
>> have a shader that just does:
>>
>> gl_ClipDistance[0] = 1;
>> gl_CullDistance[0] = 1;
>>
>> what does the resulting TGSI look like? (Assuming that clip plane 0 is
>> enabled.) What about the generated nvc0 code (for the vertex shader)?
>
>
> (hack up a patch for this, run it without DRI_PRIME=1, see i pass and forget
> to check it again)
> yeah those are equal, sorry for wasting your time on this :/

Not a waste at all... let's ignore any shortcomings of your patches
for a second, and think it through -- what do you want the TGSI to
look like? I'm not even sure.

Do you want to have a separate 2x CLIPDIST and 2x CULLDIST and let the
driver worry about figuring out the max clip dist used and sticking
the cull dists above it? Or do you want to work it out at a lower
level where they share a single CLIPORCULLDIST semantic and get a
separate e.g. shader property that gives them the mask?

I don't know how other hardware works, but nv50/nvc0 hw has 8
clip_or_cull distances, and a mask that selects whether each is a clip
or a cull distance. But perhaps other hw has them totally separate,
dunno.

>
>
>>
>> On Sun, May 24, 2015 at 1:57 PM, Tobias Klausmann
>> <tobias.johannes.klausmann at mni.thm.de> wrote:
>>>
>>> This patch series adds the needed support for this extension to the
>>> various
>>> parts of mesa to finally enable it for nvc0.
>>>
>>> Dave Airlie (1):
>>>    glsl: lower cull_distance into cull_distance_mesa
>>>
>>> Tobias Klausmann (10):
>>>    glapi: add GL_ARB_cull_distance
>>>    mesa/main: add support for GL_ARB_cull_distance
>>>    mesa/prog: Add varyings for arb_cull_distance
>>>    mesa/st: add support for GL_ARB_cull_distance
>>>    glsl: Add a helper to see if an array was unsize in the shader
>>>    glsl: Add arb_cull_distance support
>>>    i965: rename UsesClipDistanceOut to UsesClipCullDistanceOut
>>>    gallium: add support for arb_cull_distance
>>>    nouveau/codegen: sort in galliums cull_distance semantic into the
>>>      drivers bitmask
>>>    nouveau/nvc0: implement cull_distance as a special form of clip
>>>      distance
>>>
>>>   docs/GL3.txt                                       |   2 +-
>>>   docs/relnotes/10.7.0.html                          |   4 +-
>>>   src/gallium/auxiliary/cso_cache/cso_context.c      |   3 +
>>>   src/gallium/drivers/freedreno/freedreno_screen.c   |   1 +
>>>   src/gallium/drivers/i915/i915_screen.c             |   1 +
>>>   src/gallium/drivers/ilo/ilo_screen.c               |   1 +
>>>   src/gallium/drivers/llvmpipe/lp_screen.c           |   2 +
>>>   .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp  |   5 +
>>>   src/gallium/drivers/nouveau/nv30/nv30_screen.c     |   1 +
>>>   src/gallium/drivers/nouveau/nv50/nv50_screen.c     |   1 +
>>>   src/gallium/drivers/nouveau/nvc0/nvc0_program.c    |   6 +-
>>>   src/gallium/drivers/nouveau/nvc0/nvc0_program.h    |   1 +
>>>   src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |   1 +
>>>   .../drivers/nouveau/nvc0/nvc0_state_validate.c     |   1 +
>>>   src/gallium/drivers/r300/r300_screen.c             |   1 +
>>>   src/gallium/drivers/r600/r600_pipe.c               |   1 +
>>>   src/gallium/drivers/radeonsi/si_pipe.c             |   1 +
>>>   src/gallium/drivers/softpipe/sp_screen.c           |   2 +
>>>   src/gallium/drivers/svga/svga_screen.c             |   1 +
>>>   src/gallium/drivers/vc4/vc4_screen.c               |   1 +
>>>   src/gallium/include/pipe/p_defines.h               |   1 +
>>>   src/glsl/Makefile.sources                          |   1 +
>>>   src/glsl/ast_to_hir.cpp                            |  14 +
>>>   src/glsl/builtin_variables.cpp                     |  13 +-
>>>   src/glsl/glcpp/glcpp-parse.y                       |   3 +
>>>   src/glsl/glsl_parser_extras.cpp                    |   1 +
>>>   src/glsl/glsl_parser_extras.h                      |   3 +
>>>   src/glsl/glsl_types.cpp                            |   8 +-
>>>   src/glsl/glsl_types.h                              |  10 +-
>>>   src/glsl/ir_optimization.h                         |   1 +
>>>   src/glsl/link_varyings.cpp                         |  17 +-
>>>   src/glsl/link_varyings.h                           |   3 +-
>>>   src/glsl/linker.cpp                                | 124 +++--
>>>   src/glsl/lower_cull_distance.cpp                   | 549
>>> +++++++++++++++++++++
>>>   src/glsl/standalone_scaffolding.cpp                |   1 +
>>>   src/glsl/tests/varyings_test.cpp                   |  27 +
>>>   src/mapi/glapi/gen/gl_API.xml                      |   7 +-
>>>   src/mesa/drivers/dri/i965/brw_fs_visitor.cpp       |   2 +-
>>>   src/mesa/drivers/dri/i965/brw_gs.c                 |   2 +-
>>>   src/mesa/drivers/dri/i965/brw_vec4.cpp             |   2 +-
>>>   src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp     |   2 +-
>>>   src/mesa/drivers/dri/i965/brw_vs.c                 |   2 +-
>>>   src/mesa/main/extensions.c                         |   1 +
>>>   src/mesa/main/get.c                                |  26 +
>>>   src/mesa/main/get_hash_params.py                   |   4 +
>>>   src/mesa/main/mtypes.h                             |  22 +-
>>>   src/mesa/main/shaderapi.c                          |   4 +-
>>>   src/mesa/main/tests/enum_strings.cpp               |   2 +
>>>   src/mesa/program/prog_print.c                      |   4 +
>>>   src/mesa/state_tracker/st_extensions.c             |   4 +
>>>   src/mesa/state_tracker/st_program.c                |  34 ++
>>>   51 files changed, 859 insertions(+), 72 deletions(-)
>>>   create mode 100644 src/glsl/lower_cull_distance.cpp
>>>
>>> --
>>> 2.4.1
>>>
>>> _______________________________________________
>>> Nouveau mailing list
>>> Nouveau at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/nouveau
>
>


More information about the Nouveau mailing list