[Mesa-dev] [PATCH v6 0/4] Implement Various Conservative Rasterization Extensions

Rhys Perry pendingchaos02 at gmail.com
Fri Apr 27 14:43:21 UTC 2018


This patch-set adds support for GL_NV_conservative_raster and
GL_NV_conservative_raster_dilate on GM2xx and newer. It also adds support for
GL_NV_conservative_raster_pre_snap_triangles on GP1xx.

In doing so, it implements various functions in mesa core, extends the Gallium
API, connects the new mesa core functions and the Gallium API through st/mesa
and implements support for the Gallium API in the Nouveau driver.

Changes in v6:
- some small stylistic changes
- use no_error in conservative_raster_parameter()
- fix compilation in patch 3
Changes in v5:
- use CLAMP() when setting GL_CONSERVATIVE_RASTER_DILATE_NV
- use ALWAYS_INLINE for conservative_raster_parameter()
Changes in v4:
- many small stylistic changes
- small updates to reduce the size of the PGRAPH macro
Changes in v3:
- rename SubpixelPrecisionBias to NvSubpixelPrecisionBias
- move the subpixel precision bias into pipe_rasterizer_state
- set the conservative rasterization state using a PGRAPH macro
Changes in v2:
- fix indentation error in gl_API.xml
- fix code to handle earlier hardware

Rhys Perry (4):
  mesa: add support for nvidia conservative rasterization extensions
  gallium: add initial support for conservative rasterization
  st/mesa: add support for nvidia conservative rasterization extensions
  nvc0: add conservative rasterization support

 src/gallium/docs/source/cso/rasterizer.rst         |  23 ++++
 src/gallium/docs/source/screen.rst                 |  18 +++
 src/gallium/drivers/etnaviv/etnaviv_screen.c       |  10 ++
 src/gallium/drivers/freedreno/freedreno_screen.c   |  10 ++
 src/gallium/drivers/i915/i915_screen.c             |  13 +++
 src/gallium/drivers/llvmpipe/lp_screen.c           |  12 ++
 src/gallium/drivers/nouveau/nv30/nv30_screen.c     |  10 ++
 src/gallium/drivers/nouveau/nv50/nv50_screen.c     |  10 ++
 src/gallium/drivers/nouveau/nvc0/mme/com9097.mme   |  30 +++++
 src/gallium/drivers/nouveau/nvc0/mme/com9097.mme.h |  21 ++++
 src/gallium/drivers/nouveau/nvc0/nvc0_3d.xml.h     |   5 +
 src/gallium/drivers/nouveau/nvc0/nvc0_macros.h     |   4 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c     |  17 +++
 src/gallium/drivers/nouveau/nvc0/nvc0_state.c      |  14 +++
 src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h   |   2 +-
 src/gallium/drivers/r300/r300_screen.c             |  10 ++
 src/gallium/drivers/r600/r600_pipe.c               |   6 +
 src/gallium/drivers/r600/r600_pipe_common.c        |   4 +
 src/gallium/drivers/radeonsi/si_get.c              |  10 ++
 src/gallium/drivers/softpipe/sp_screen.c           |  12 ++
 src/gallium/drivers/svga/svga_screen.c             |  13 +++
 src/gallium/drivers/swr/swr_screen.cpp             |  10 ++
 src/gallium/drivers/vc4/vc4_screen.c               |  13 ++-
 src/gallium/drivers/vc5/vc5_screen.c               |  13 ++-
 src/gallium/drivers/virgl/virgl_screen.c           |  10 ++
 src/gallium/include/pipe/p_defines.h               |  20 ++++
 src/gallium/include/pipe/p_state.h                 |   8 ++
 src/mapi/glapi/gen/gl_API.xml                      |  47 ++++++++
 src/mapi/glapi/gen/gl_genexec.py                   |   1 +
 src/mesa/Makefile.sources                          |   2 +
 src/mesa/main/attrib.c                             |  60 ++++++++--
 src/mesa/main/conservativeraster.c                 | 128 +++++++++++++++++++++
 src/mesa/main/conservativeraster.h                 |  48 ++++++++
 src/mesa/main/context.c                            |  10 ++
 src/mesa/main/dlist.c                              |  86 ++++++++++++++
 src/mesa/main/enable.c                             |  14 +++
 src/mesa/main/extensions_table.h                   |   4 +
 src/mesa/main/get.c                                |   3 +
 src/mesa/main/get_hash_params.py                   |  13 +++
 src/mesa/main/mtypes.h                             |  28 ++++-
 src/mesa/main/tests/dispatch_sanity.cpp            |  27 +++++
 src/mesa/main/viewport.c                           |  57 +++++++++
 src/mesa/main/viewport.h                           |   6 +
 src/mesa/meson.build                               |   2 +
 src/mesa/state_tracker/st_atom_rasterizer.c        |  15 +++
 src/mesa/state_tracker/st_context.c                |   2 +
 src/mesa/state_tracker/st_extensions.c             |  34 ++++++
 47 files changed, 900 insertions(+), 15 deletions(-)
 create mode 100644 src/mesa/main/conservativeraster.c
 create mode 100644 src/mesa/main/conservativeraster.h

-- 
2.14.3



More information about the mesa-dev mailing list