[Nouveau] [RFC PATCH 00/11] Implement ARB_cull_distance
Tobias Klausmann
tobias.johannes.klausmann at mni.thm.de
Sun May 24 12:56:48 PDT 2015
On 24.05.2015 21:36, Ilia Mirkin wrote:
> 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.
With my limited experience about other hardware i'd go with seperate
clip/cull and let the drivers figure out the right way to place them.
That gives us the freedom to have it the way nv50/nvc0 works and other
ways, like seperated clip/cull_distances if needed. Maybe we should just
consider nouveau and radeon and decide by the hw of these often used
drivers.
Marek any comments on how the various radeons work?
>
>>
>>> 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