gallium: add basic support for ARB_sample_shading
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
@@ -81,7 +81,10 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] =
|
||||
"PCOORD",
|
||||
"VIEWPORT_INDEX",
|
||||
"LAYER",
|
||||
"CULLDIST"
|
||||
"CULLDIST",
|
||||
"SAMPLEID",
|
||||
"SAMPLEPOS",
|
||||
"SAMPLEMASK"
|
||||
};
|
||||
|
||||
const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] =
|
||||
|
@@ -67,6 +67,7 @@ objects. They all follow simple, one-method binding calls, e.g.
|
||||
which are used as comparison values in stencil test.
|
||||
* ``set_blend_color``
|
||||
* ``set_sample_mask``
|
||||
* ``set_min_samples`` sets the minimum number of samples that must be run.
|
||||
* ``set_clip_state``
|
||||
* ``set_polygon_stipple``
|
||||
* ``set_scissor_states`` sets the bounds for the scissor test, which culls
|
||||
|
@@ -197,6 +197,9 @@ The integer capabilities:
|
||||
in conjunction with a texture gather opcode.
|
||||
* ``PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET``: The maximum offset that can be used
|
||||
in conjunction with a texture gather opcode.
|
||||
* ``PIPE_CAP_SAMPLE_SHADING``: Whether there is support for per-sample
|
||||
shading. The context->set_min_samples function will be expected to be
|
||||
implemented.
|
||||
|
||||
|
||||
.. _pipe_capf:
|
||||
|
@@ -2621,6 +2621,26 @@ distances and by the PIPE_MAX_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT
|
||||
which specifies the maximum number of registers which can be
|
||||
annotated with those semantics.
|
||||
|
||||
TGSI_SEMANTIC_SAMPLEID
|
||||
""""""""""""""""""""""
|
||||
|
||||
For fragment shaders, this semantic label indicates that a system value
|
||||
contains the current sample id (i.e. gl_SampleID). Only the X value is used.
|
||||
|
||||
TGSI_SEMANTIC_SAMPLEPOS
|
||||
"""""""""""""""""""""""
|
||||
|
||||
For fragment shaders, this semantic label indicates that a system value
|
||||
contains the current sample's position (i.e. gl_SamplePosition). Only the X
|
||||
and Y values are used.
|
||||
|
||||
TGSI_SEMANTIC_SAMPLEMASK
|
||||
""""""""""""""""""""""""
|
||||
|
||||
For fragment shaders, this semantic label indicates that an output contains
|
||||
the sample mask used to disable further sample processing
|
||||
(i.e. gl_SampleMask). Only the X value is used, up to 32x MS.
|
||||
|
||||
|
||||
Declaration Interpolate
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@@ -208,6 +208,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
|
||||
/* Stream output. */
|
||||
|
@@ -220,6 +220,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS:
|
||||
|
@@ -439,6 +439,7 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
|
||||
default:
|
||||
|
@@ -241,6 +241,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
return 1;
|
||||
|
@@ -135,6 +135,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
||||
|
@@ -198,6 +198,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
case PIPE_CAP_MAX_VIEWPORTS:
|
||||
return NV50_MAX_VIEWPORTS;
|
||||
|
@@ -181,6 +181,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
case PIPE_CAP_MAX_VIEWPORTS:
|
||||
return 1;
|
||||
|
@@ -173,6 +173,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
|
||||
/* SWTCL-only features. */
|
||||
|
@@ -314,6 +314,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS:
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
|
||||
/* Stream output. */
|
||||
|
@@ -243,6 +243,7 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||
case PIPE_CAP_TGSI_TEXCOORD:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK:
|
||||
|
@@ -189,6 +189,7 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||
case PIPE_CAP_TEXTURE_GATHER_SM5:
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
return 1;
|
||||
|
@@ -273,6 +273,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||
case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
|
||||
case PIPE_CAP_FAKE_SW_MSAA:
|
||||
case PIPE_CAP_TEXTURE_QUERY_LOD:
|
||||
case PIPE_CAP_SAMPLE_SHADING:
|
||||
return 0;
|
||||
case PIPE_CAP_MIN_MAP_BUFFER_ALIGNMENT:
|
||||
return 64;
|
||||
|
@@ -190,6 +190,9 @@ struct pipe_context {
|
||||
void (*set_sample_mask)( struct pipe_context *,
|
||||
unsigned sample_mask );
|
||||
|
||||
void (*set_min_samples)( struct pipe_context *,
|
||||
unsigned min_samples );
|
||||
|
||||
void (*set_clip_state)( struct pipe_context *,
|
||||
const struct pipe_clip_state * );
|
||||
|
||||
|
@@ -556,6 +556,7 @@ enum pipe_cap {
|
||||
PIPE_CAP_TEXTURE_QUERY_LOD = 94,
|
||||
PIPE_CAP_MIN_TEXTURE_GATHER_OFFSET = 95,
|
||||
PIPE_CAP_MAX_TEXTURE_GATHER_OFFSET = 96,
|
||||
PIPE_CAP_SAMPLE_SHADING = 97,
|
||||
};
|
||||
|
||||
#define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0)
|
||||
|
@@ -167,7 +167,10 @@ struct tgsi_declaration_interp
|
||||
#define TGSI_SEMANTIC_VIEWPORT_INDEX 21 /**< viewport index */
|
||||
#define TGSI_SEMANTIC_LAYER 22 /**< layer (rendertarget index) */
|
||||
#define TGSI_SEMANTIC_CULLDIST 23
|
||||
#define TGSI_SEMANTIC_COUNT 24 /**< number of semantic values */
|
||||
#define TGSI_SEMANTIC_SAMPLEID 24
|
||||
#define TGSI_SEMANTIC_SAMPLEPOS 25
|
||||
#define TGSI_SEMANTIC_SAMPLEMASK 26
|
||||
#define TGSI_SEMANTIC_COUNT 27 /**< number of semantic values */
|
||||
|
||||
struct tgsi_declaration_semantic
|
||||
{
|
||||
|
Reference in New Issue
Block a user