[Nouveau] [PATCH 00/12] Tessellation support for nvc0

Ilia Mirkin imirkin at alum.mit.edu
Sat May 16 22:07:03 PDT 2015


This is enough to enable tessellation support on nvc0. It seems to
work a lot better on my GF108 than GK208. I suspect that there's some
sort of scheduling shenanigans that need to be adjusted for
kepler+. Or perhaps some shader header things.

Even with the GF108, I still get occasional blue triangles in Heaven,
but I get a *ton* of them on the GK208 -- seemingly the same issue,
but it's much worse on there.

Also there's about a 100% chance that gl_PrimitiveID doesn't work.

In any case, I plan on pushing this semi-soon unless there are any
loud objections. I don't think it's going to do too much good sitting
in my tree, or too much evil sitting upstream while core + st/mesa are
worked out.

Ilia Mirkin (12):
  nvc0: preliminary tess support
  nvc0: add support for setting patch vertices at draw time
  nvc0: add handling for set_tess_state callback
  nvc0: TESSCOORD comes in as a sysval, not an input
  nvc0/ir: mark varyings as per-patch based on semantic name
  nv50/ir: populate info structure based on new tess properties
  nv50/ir: set perPatch flag on load/stores to per-patch varyings
  nv50/ir: add support for reading outputs in tess control shaders
  nvc0/ir: patch vertex count is stored in the upper bits
  nvc0/ir: handle loads from outputs in control shaders
  nvc0/ir: allow tess eval output loads to be CSE'd
  nv50/ir: cleanup private enums that have graduated to gallium

 src/gallium/drivers/nouveau/codegen/nv50_ir.cpp    |  4 +-
 .../drivers/nouveau/codegen/nv50_ir_driver.h       | 12 ----
 .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp  | 56 +++++++++++++++--
 .../nouveau/codegen/nv50_ir_lowering_nvc0.cpp      |  7 +++
 .../drivers/nouveau/codegen/nv50_ir_peephole.cpp   |  2 +
 src/gallium/drivers/nouveau/nvc0/nvc0_context.h    |  8 ++-
 src/gallium/drivers/nouveau/nvc0/nvc0_program.c    | 56 +++++++----------
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |  7 +--
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.h     |  1 +
 .../drivers/nouveau/nvc0/nvc0_shader_state.c       |  3 -
 src/gallium/drivers/nouveau/nvc0/nvc0_state.c      | 71 ++++++++++++++++++++++
 .../drivers/nouveau/nvc0/nvc0_state_validate.c     | 11 ++++
 src/gallium/drivers/nouveau/nvc0/nvc0_tex.c        | 34 +++++------
 src/gallium/drivers/nouveau/nvc0/nvc0_vbo.c        |  9 ++-
 .../drivers/nouveau/nvc0/nvc0_vbo_translate.c      |  3 +-
 15 files changed, 200 insertions(+), 84 deletions(-)

-- 
2.3.6



More information about the Nouveau mailing list