blob: 22c1bd8dc3ec256247527ee99ab9de5ef99d2c80 [file] [log] [blame]
Name
NV_conservative_raster_dilate
Name Strings
GL_NV_conservative_raster_dilate
Contact
Kedarnath Thangudu, NVIDIA Corporation (kthangudu 'at' nvidia.com)
Contributors
Chris Wyman, NVIDIA Corporation (cwyman 'at' nvidia.com)
Aaron Lefohn, NVIDIA Corporation (alefohn 'at' nvidia.com)
Mark Kilgard, NVIDIA Corporation (mkilgard 'at' nvidia.com)
Eric Werness, NVIDIA Corporation (ewerness 'at' nvidia.com)
Status
Shipping in Nvidia release 352.XX drivers and up.
Version
Last Modified Date: September 10, 2015
Revision: 2
Number
OpenGL Extension #480
Dependencies
This extension is written against the NV_conservative_raster extension as
applied to OpenGL 4.3 specification (Compatibility Profile) but may be
used with the Core profile or OpenGL ES 2.0 or later.
Overview
This extension extends the conservative rasterization functionality
provided by NV_conservative_raster. It provides a new control to generate
an "over-conservative" rasterization by dilating primitives prior to
rasterization.
When using conservative raster to bin geometry, this extension provides a
programmable overlap region between adjacent primitives. Regular
rasterization bins triangles with a shared edge uniquely into pixels.
Conservative raster has a one-pixel overlap along the shared edge. Using
a half-pixel raster dilation, this overlap region increases to two pixels.
New Procedures and Functions
void ConservativeRasterParameterfNV(enum pname, float value);
New Tokens
Accepted by the <pname> parameter of ConservativeRasterParameterfNV:
CONSERVATIVE_RASTER_DILATE_NV 0x9379
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetInteger64v, GetFloatv, and GetDoublev:
CONSERVATIVE_RASTER_DILATE_NV 0x9379
CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A
CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B
Additions to Chapter 14 of the OpenGL 4.3 (Compatibility Profile) Specification
(Fixed-Function Primitive Assembly and Rasterization)
Add the following paragraph to the end of the new subsection 14.6.X
"Conservative Rasterization" added by NV_conservative_raster
When CONSERVATIVE_RASTERIZATION_NV is enabled, an "over conservative"
rasterization of primitives may be achieved by dilating points, lines, or
polygons in screen space prior to rasterization. The amount of dilation
may be specified by the following command
void ConservativeRasterParameterfNV(enum pname, float value);
with the <pname> set to CONSERVATIVE_RASTER_DILATE_NV. The <value>
specifies the amount of dilation as a fraction of the pixel size. Not all
fractional values are supported. If the requested value is greater than
the maximum supported value, the maximum supported value is used. If any
other supported value is requested, the nearest supported value which
is greater than the requested value is used. Only a dilation value of 0
pixels is guaranteed to be supported; others depend on the implementation.
Calling Get with CONSERVATIVE_RASTER_DILATE_RANGE_NV returns
two floating point values representing minimum and maximum supported
dilation values. Calling Get with CONSERVATIVE_RASTER_DILATE_-
GRANULARITY_NV returns a single floating point value representing the
value difference between consecutive supported values within the range.
Additions to the AGL/GLX/WGL Specifications
None.
GLX Protocol
None.
Modifications to the OpenGL Shading Language Specification, Version 4.30
None.
Errors
If ConservativeRasterParameteriNV is called and <pname> is not
CONSERVATIVE_RASTER_DILATE_NV the error INVALID_ENUM is generated.
If ConservativeRasterParameteriNV is called with <pname> set to
CONSERVATIVE_RASTER_DILATE_NV the error INVALID_VALUE is generated if
<value> is less than 0.
New Implementation Dependent State
Minimum
Get Value Type Get Command Value Description Sec.
--------- ------- ----------- ------- ------------------------------ ------
CONSERVATIVE_RASTER_DILATE_- 2 x R+ GetFloatv 0, 0.75 Min and Max dilation values 14.6.X
RANGE_NV supported
CONSERVATIVE_RASTER_DILATE_- R+ GetFloatv 0 Difference between consecutive 14.6.X
GRANULARITY_NV supported values in the range
New State
Get Value Get Command Type Initial Value Description Sec. Attribute
--------- ----------- ---- ------------- ----------- ---- ---------
CONSERVATIVE_RASTER_DILATE_NV GetFloatv R+ 0 Dilate primitives when 14.6.X -
conservative rasterization
is enabled.
NVIDIA Implementation Details
NVIDIA's GeForce 9xx and Quadro Mxxxx series of GPUs (GM20x) and Tegra X1
support this extension with a granularity of 0.25 and a range of [0, 0.75].
Issues
None.
Revision History
Revision 2
- Fix the descriptions for the <pname> parameters.
- Fix typos and wordings.
Revision 1
- Internal revisions.