On 24.05.2015 21:36, Ilia Mirkin wrote:
On Sun, May 24, 2015 at 3:30 PM, Tobias Klausmann
<[email protected]> 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
<[email protected]> 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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau
_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau