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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev