• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1-------------------------------------------------------------------------
2drawElements Quality Program Test Specification
3-----------------------------------------------
4
5Copyright 2014 The Android Open Source Project
6
7Licensed under the Apache License, Version 2.0 (the "License");
8you may not use this file except in compliance with the License.
9You may obtain a copy of the License at
10
11     http://www.apache.org/licenses/LICENSE-2.0
12
13Unless required by applicable law or agreed to in writing, software
14distributed under the License is distributed on an "AS IS" BASIS,
15WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16See the License for the specific language governing permissions and
17limitations under the License.
18-------------------------------------------------------------------------
19    Multisample interpolation tests
20
21Tests:
22 + dEQP-GLES31.functional.shaders.multisample_interpolation.*
23 + dEQP-GLES31.functional.state_query.multisample_interpolation.*
24
25Includes:
26 + Sample qualifier
27 + interpolateAtSample
28 + interpolateAtCentroid
29 + interpolateAtOffset
30 + Rendering to the default framebuffer, multi- and single sample
31   textures and renderbuffers
32 + Implementation limit queries for
33    - MIN_FRAGMENT_INTERPOLATION_OFFSET
34	- MAX_FRAGMENT_INTERPOLATION_OFFSET
35	- FRAGMENT_INTERPOLATION_OFFSET_BITS
36
37Excludes:
38 + interpolateAtSample() with non dynamically uniform sample index.
39 + Rendering to every supported render buffer sample count / format
40 + Rendering to every supported multisample texture sample count / format
41
42Description:
43
44sample_qualifier.* cases test sample qualifier by rendering a high frequency
45test pattern with a sample-qualified varying. Using the same reasoning as in
46sample shading test specification, the result image should contain numSamples +
471 different shades of gray, e.g. single sampled render target should contain two
48shades (black and white) and 2x sampled three shades.
49
50interpolate_at_sample.* cases test interpolateAtSample() function with different
51inputs and render target configurations.
52
53interpolate_at_sample.static_sample_number and
54interpolate_at_sample.dynamic_sample_number cases sample a high frequency
55function with at every sample position and average the result. static cases use
56integer literals at which samples values are interpolated, in dynamic cases the
57sample index "depends" (all samples are sampled anyway) on uniform values.
58
59interpolate_at_sample.non_multisample_buffer cases test that using
60interpolateAtSample() with a non-multisample render target with any sample index
61will result in a value interpolated at the center of the pixel. Value is
62verified by interpolating a varying containing screen-space location in pixels.
63
64interpolate_at_sample.centroid_qualifier cases interpolate a centroid-qualified
65varying with interpolateAtSample(). The tests render narrow triangles and
66compare results of interpolateAtSample of two identical varyings, but with
67different centroid-qualification. The centroid qualifier should not have any
68effect on the values returned by interpolateAtSample().
69
70interpolate_at_sample.at_sample_id cases test that sample index used by
71interpolateAtSample is the same as in gl_SampleID. Tests compare value
72per-sample qualified varying and the value returned by
73interpolateAtSample(v_varying, gl_SampleID). Values should be equal.
74
75interpolate_at_centroid.* cases test interpolateAtCentroid() function with
76different inputs and render target configurations.
77
78interpolate_at_centroid.consistency cases test that values returned by
79interpolateAtCentroid are equal to the values of a centroid qualified varying.
80Tests render multiple narrow triangles, assign the same value to a
81centroid-qualified and non-centroid-qualified varying and then compares the
82values of centroid-qualified varying and interpolateAtCentroid function return
83value when given the non-centroid-qualified varying as an input.
84
85interpolate_at_centroid.array_element cases test interpolateAtCentroid function
86when given a varying array element as an input. Tests render multiple narrow
87triangles, and the frament shader verifies that values returned by
88interpolateAtCentroid() were interpolated within the primitive area.
89
90interpolate_at_offset.* cases test interpolateAtOffset() function with different
91inputs and render target configurations.
92
93interpolate_at_offset.no_qualifiers, .centroid_qualifier, and .sample_qualifier
94cases test interpolateAtOffset() function targeting a varying without
95qualifiers, with centroid qualifier and with per-sample qualifier.
96.array_element cases test interpolateAtOffset targeting an array element. Tests
97render a quad and in the fragment shader use interpolateAtOffset to a
98screen-space location (in pixels) varying. The fractional part of the returned
99value should be equal to the interpolation offset.
100
101interpolate_at_offset.at_sample_position cases test that using
102interpolateAtOffset to interpolate a value at the sample location returns the
103same value as a per-sample interpolated varying.
104