allow non-preferred line interpolation for gles
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Thu, 24 Mar 2022 15:23:45 +0000 (16:23 +0100)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Wed, 30 Mar 2022 14:51:02 +0000 (14:51 +0000)
commita6cd9c75d7c667437266592b47e629d2b6fc711c
treecfd7fc0424a0715191897cf8638668e069a8e40b
parenta1144cf47d30861851309a6f0da8ce1930c67359
allow non-preferred line interpolation for gles

The OpenGL ES 3.2 spec, section 13.6.2.1 ("Wide Lines") says the
following:

Change-Id: I1cff239a9cc712b9e8677966f7b3b1adfe72499a

---8<---
The preferred method of attribute interpolation for a wide line is to
generate the same attribute values for all fragments in the row or
column described above, as if the adjusted line were used for
interpolation and those values replicated to the other fragments,
except for gl_FragCoord which is interpolated as usual. An
implementation may instead interpolate each fragment according to the
formula in "Basic Line Segment Rasterization", using the original
line segment endpoints.
---8<---

However, the code that verified the interpolation only checked against
the preferred interpolation.

Luckily, we have code that does the right checking. By marking the ES2
and ES3 line-rasterization tests with a bit to allow this, we can hook
this up as appropriate.

Components: OpenGL ES, Framework

VK-GL-CTS public Issue: 273

Affected Tests:
dEQP-GLES2.functional.rasterization.interpolation.*_wide
dEQP-GLES3.functional.rasterization.interpolation.line_wide
dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.interpolation.lines_wide
dEQP-GLES3.functional.rasterization.fbo.texture_2d.interpolation.lines_wide

Change-Id: Iacd493416dc945711410eb08f73f9e234b78ec61
framework/common/tcuRasterizationVerifier.cpp
framework/common/tcuRasterizationVerifier.hpp
modules/gles2/functional/es2fRasterizationTests.cpp
modules/gles3/functional/es3fRasterizationTests.cpp