You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
5.6 KiB
113 lines
5.6 KiB
-------------------------------------------------------------------------
|
|
drawElements Quality Program Test Specification
|
|
-----------------------------------------------
|
|
|
|
Copyright 2014 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-------------------------------------------------------------------------
|
|
Sample variable tests
|
|
|
|
Tests:
|
|
+ dEQP-GLES31.functional.shaders.sample_variables.*
|
|
|
|
Includes:
|
|
+ Rendering to default framebuffer, multi- and single sample
|
|
textures and renderbuffers
|
|
+ Built-in variables:
|
|
- gl_NumSamples
|
|
- gl_MaxSamples
|
|
- gl_SampleID
|
|
- gl_SamplePos
|
|
- gl_SampleMaskIn
|
|
+ Writing to gl_SampleMask
|
|
+ Interaction with OES_sample_shading
|
|
|
|
Excludes:
|
|
+ Rendering to every supported render buffer sample count / format
|
|
+ Rendering to every supported multisample texture sample count / format
|
|
|
|
Description:
|
|
|
|
num_samples.* cases test gl_NumSamples built-in value with different render
|
|
target configurations. max_samples.* cases test gl_MaxSamples built-in variable.
|
|
Values are verified with verifier fragment shader.
|
|
|
|
sample_id.* cases verify gl_SampleID values. A quad is drawn with a shader
|
|
program. With texture targets, each sample encodes its gl_SampleID to the
|
|
fragment output value and then texture contents are verified. With default
|
|
framebuffer and renderbuffer targets, render area is partitioned to a grid so
|
|
that in each grid cell only the fragment shader invocations with a certain
|
|
gl_SampleID output a non-zero green value. Result image is then verified to
|
|
contain only non-zero green values. The test with framebuffer and renderbuffer
|
|
thus only guarantees that for each pixel there exist a fragment shader
|
|
invocation for every valid gl_SampleID value, but not that a matching fragment
|
|
shader invocation is unique.
|
|
|
|
sample_pos.correctness.* cases verify gl_SamplePosition built-in variable
|
|
contains the position in which varyings were interpolated. Cases render a quad
|
|
with a verifier fragment shader. Fragment shader compares gl_SamplePosition
|
|
values against a per-sample interpolated screen-space location (in pixels)
|
|
varying. gl_SamplePosition should be equal to the fractional part of the
|
|
interpolated varying value.
|
|
|
|
sample_pos.distribution.* cases verify the distribution of gl_SamplePositions
|
|
within a pixel. The tests render a quad with a fragment shader that encodes the
|
|
gl_SamplePosition value and value legality (range check) to the color channels.
|
|
With texture render targets, the texture contents are read and positions are
|
|
verified for legality, uniqueness and distribution. With framebuffer and
|
|
renderbuffer render targets only the legality and distribution are verified.
|
|
Distribution is verified by averaging sample position values (texture) or by
|
|
resolving with an implementation defined method (framebuffer, renderbuffer).
|
|
Averaged/resolved value should be reasonably close to the pixel center. Too
|
|
large a bias away from the expected value will result in a quality warning.
|
|
|
|
sample_mask_in.* cases test reading gl_SampleMaskIn built-in variable and
|
|
sample_mask_in.* cases write values to gl_SampleMask built-in variable. Sample
|
|
mask operations are multisample operations and should not have effect with
|
|
single sample render targets. *_per_pixel variations test value when fragment
|
|
shader is executed once per pixel, and *_per_sample when shader is executed per
|
|
sample. *_per_two_samples variations use OES_sample_shading, with sample
|
|
shading value set to 50%, i.e. there should be AT LEAST one invocation per two
|
|
samples.
|
|
|
|
sample_mask_in.sample_mask cases test gl_SampleMaskIn that with multisampled
|
|
render targets gl_SampleMaskIn does not contain any bits not set in
|
|
GL_SAMPLE_MASK. With single sample render targets gl_SampleMaskIn should not
|
|
depend on GL_SAMPLE_MASK value.
|
|
|
|
sample_mask_in.bit_count cases test gl_SampleMaskIn contains only a certain
|
|
number of set bits. In the per pixel variation, gl_SampleMaskIn should contain
|
|
[1, numSamples] set bits. In per sample cases, the gl_SampleMaskIn should only
|
|
contain one set bit. In per two samples cases, there should be [1, numSamples/2]
|
|
bits (all but one invocation gets one sample, one invocation gets the other
|
|
samples).
|
|
|
|
sample_mask_in.bits_unique_per_sample cases tests that the single set bit in
|
|
gl_SampleMaskIn is unique. sample_mask_in.bits_unique_per_two_samples cases test
|
|
that each bit is set only in a single gl_SampleMaskIn bitset and that number of
|
|
distinct gl_SampleMaskIn bitsets matches the number guaranteed by
|
|
OES_sample_shading. Tests render to a multisample texture, encode
|
|
gl_SampleMaskIn to the color channel, and then read back the texture contents.
|
|
|
|
sample_mask.discard_half tests discard half of the samples by writing 0xAAAA...
|
|
to gl_SampleMask output variable. With single sample targets, writing to
|
|
gl_SampleMask should have no effect. With multisample targets the result image
|
|
color intensity should decrease. With multisample targets with sample count = 1,
|
|
all fragments should be discarded.
|
|
|
|
sample_mask.inverse cases set gl_SampleMask to the inverse of current
|
|
SAMPLE_MASK. With multisample render targets, all fragments should be discarded.
|
|
With single sample render targets, writing to gl_SampleMask should have no
|
|
effect.
|