summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2020-12-31 08:47:27 +0100
committerMarek Vasut <marex@denx.de>2021-10-07 22:24:19 +0000
commit014c9d09115e15f5a074457a753bf3a43173ef7f (patch)
treedc7f5ded04ebbf64f431bb03a6a60fb76b355795
parent7d7dd2688c214e1b3c00f37226500cbec4a58efb (diff)
arb_point_sprite: Port ARB_point_sprite checkerboard test to GLES1
Make the arb_point_sprite checkerboard test work on GLES1. Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Emma Anholt <emma@anholt.net> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Part-of: <https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/442>
-rw-r--r--tests/opengl.py5
-rw-r--r--tests/spec/arb_point_sprite/CMakeLists.gles1.txt3
-rw-r--r--tests/spec/arb_point_sprite/checkerboard.c37
3 files changed, 38 insertions, 7 deletions
diff --git a/tests/opengl.py b/tests/opengl.py
index e0781b183..13f3dde95 100644
--- a/tests/opengl.py
+++ b/tests/opengl.py
@@ -1558,6 +1558,11 @@ with profile.test_list.group_manager(
g(['arb_point_sprite-mipmap'])
g(['arb_point_sprite-interactions', '1.0'])
+# Group OES_point_sprite
+with profile.test_list.group_manager(
+ PiglitGLTest, grouptools.join('spec', 'OES_point_sprite')) as g:
+ g(['arb_point_sprite-checkerboard_gles1'], run_concurrent=False)
+
# Group ARB_tessellation_shader
with profile.test_list.group_manager(
PiglitGLTest, grouptools.join('spec', 'ARB_tessellation_shader')) as g:
diff --git a/tests/spec/arb_point_sprite/CMakeLists.gles1.txt b/tests/spec/arb_point_sprite/CMakeLists.gles1.txt
new file mode 100644
index 000000000..0d7897940
--- /dev/null
+++ b/tests/spec/arb_point_sprite/CMakeLists.gles1.txt
@@ -0,0 +1,3 @@
+link_libraries(piglitutil_${piglit_target_api})
+
+piglit_add_executable (arb_point_sprite-checkerboard_gles1 checkerboard.c)
diff --git a/tests/spec/arb_point_sprite/checkerboard.c b/tests/spec/arb_point_sprite/checkerboard.c
index a59e298c5..769bb3bcd 100644
--- a/tests/spec/arb_point_sprite/checkerboard.c
+++ b/tests/spec/arb_point_sprite/checkerboard.c
@@ -37,6 +37,7 @@
PIGLIT_GL_TEST_CONFIG_BEGIN
config.supports_gl_compat_version = 10;
+ config.supports_gl_es_version = 10;
config.window_width = 1+((BOX_SIZE+1)*TEST_COLS);
config.window_height = 1+((BOX_SIZE+1)*TEST_ROWS);
@@ -58,18 +59,22 @@ piglit_init(int argc, char **argv)
(void) argc;
(void) argv;
+#ifdef PIGLIT_USE_OPENGL
piglit_require_extension("GL_ARB_point_sprite");
+#else
+ piglit_require_extension("GL_OES_point_sprite");
+#endif
piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
glEnable(GL_TEXTURE_2D);
- glEnable(GL_POINT_SPRITE_ARB);
+ glEnable(GL_POINT_SPRITE);
glGetFloatv(GL_POINT_SIZE_MAX, &realMaxSize);
maxSize = (realMaxSize > BOX_SIZE) ? BOX_SIZE : realMaxSize;
glClearColor(0.2, 0.2, 0.2, 1.0);
- glColor3f(1.0, 1.0, 1.0);
+ glColor4f(1.0, 1.0, 1.0, 1.0);
tex = piglit_checkerboard_texture(0, 0, 2, 2, 1, 1, black, white);
glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE);
@@ -82,8 +87,12 @@ piglit_init(int argc, char **argv)
enum piglit_result
piglit_display(void)
{
- static const GLenum origins[2] = { GL_UPPER_LEFT, GL_LOWER_LEFT };
+#ifdef PIGLIT_USE_OPENGL
const unsigned num_rows = (piglit_get_gl_version() >= 20) ? 2 : 1;
+#else
+ const unsigned num_rows = 1;
+#endif
+ static const GLenum origins[2] = { GL_UPPER_LEFT, GL_LOWER_LEFT };
GLboolean pass = GL_TRUE;
unsigned i;
unsigned j;
@@ -98,12 +107,14 @@ piglit_display(void)
const float *const lower_left = (origins[i] == GL_UPPER_LEFT)
? white : black;
+#ifdef PIGLIT_USE_OPENGL
/* OpenGL version must be at least 2.0 to support modifying
* GL_POINT_SPRITE_COORD_ORIGIN.
*/
if (piglit_get_gl_version() >= 20)
glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN,
origins[i]);
+#endif
for (j = 0; j < TEST_COLS; j++) {
const float x = 1 + (BOX_SIZE / 2)
@@ -117,10 +128,22 @@ piglit_display(void)
continue;
glPointSize(size - 0.2);
- glBegin(GL_POINTS);
- glTexCoord2f(1.5, 1.5);
- glVertex2f(x, y);
- glEnd();
+
+ /* Vertex arrays are overkill for this case,
+ * but they are necessary for OpenGL ES 1.x.
+ */
+ GLfloat tcp[] = { 1.5, 1.5 };
+ GLfloat vp[] = { x, y };
+
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+
+ glTexCoordPointer(2, GL_FLOAT, 0, tcp);
+ glVertexPointer(2, GL_FLOAT, 0, vp);
+ glDrawArrays(GL_POINTS, 0, 1);
+
+ glDisableClientState(GL_VERTEX_ARRAY);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
if (!piglit_probe_pixel_rgb(x - (size / 4),
y + (size / 4),