Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package piglit for openSUSE:Factory checked in at 2025-02-19 15:59:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/piglit (Old) and /work/SRC/openSUSE:Factory/.piglit.new.25061 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "piglit" Wed Feb 19 15:59:32 2025 rev:28 rq:1246958 version:1~20250217 Changes: -------- --- /work/SRC/openSUSE:Factory/piglit/piglit.changes 2025-01-15 17:45:46.263067172 +0100 +++ /work/SRC/openSUSE:Factory/.piglit.new.25061/piglit.changes 2025-02-19 16:00:30.408981475 +0100 @@ -1,0 +2,13 @@ +Wed Feb 19 08:20:11 UTC 2025 - Martin Pluskal <mplus...@suse.com> + +- Update to version 1~20250217: + * arb_direct_state_access: disable dithering + * arb_program_interface_query: set vs_input2[1][0] as valid name + * perf/pixel-rate: new pixel throughput microbenchmark + * OVR_multiview: another num_views validation test + * glx: don't fail test if the X server is inconsistent + * ovr_multiview: add some basic glsl tests + * arb_clear_texture: use floating point verification for format type GL_FLOAT + * glx: don't expect a glx error + +------------------------------------------------------------------- Old: ---- piglit-1~20250108.obscpio New: ---- piglit-1~20250217.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ piglit.spec ++++++ --- /var/tmp/diff_new_pack.cgtaxB/_old 2025-02-19 16:00:31.313019300 +0100 +++ /var/tmp/diff_new_pack.cgtaxB/_new 2025-02-19 16:00:31.313019300 +0100 @@ -26,7 +26,7 @@ %bcond_without opengles %endif Name: piglit -Version: 1~20250108 +Version: 1~20250217 Release: 0 Summary: OpenGL driver testing framework License: MIT ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.cgtaxB/_old 2025-02-19 16:00:31.377021977 +0100 +++ /var/tmp/diff_new_pack.cgtaxB/_new 2025-02-19 16:00:31.381022145 +0100 @@ -7,6 +7,6 @@ <param name="url">https://gitlab.freedesktop.org/mesa/piglit</param> <param name="changesrevision">9f280db77074eb70cf9f5b4645799232ab9fe086</param></service><service name="tar_scm"> <param name="url">https://gitlab.freedesktop.org/mesa/piglit.git/</param> - <param name="changesrevision">631b72944f56e688f56a08d26c8a9f3988801a08</param></service></servicedata> + <param name="changesrevision">a8821ad30633ac892b557f7b9d2708908674f5d4</param></service></servicedata> (No newline at EOF) ++++++ piglit-1~20250108.obscpio -> piglit-1~20250217.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/perf/CMakeLists.gl.txt new/piglit-1~20250217/tests/perf/CMakeLists.gl.txt --- old/piglit-1~20250108/tests/perf/CMakeLists.gl.txt 2025-01-08 20:18:27.000000000 +0100 +++ new/piglit-1~20250217/tests/perf/CMakeLists.gl.txt 2025-02-17 07:25:02.000000000 +0100 @@ -16,6 +16,7 @@ piglit_add_executable (fill fill.c common.c) piglit_add_executable (genmipmap genmipmap.c common.c) piglit_add_executable (pbobench pbobench.c common.c) +piglit_add_executable (pixel-rate pixel-rate.c common.c) piglit_add_executable (readpixels readpixels.c common.c) piglit_add_executable (shader-io-rate shader-io-rate.c common.c) piglit_add_executable (teximage teximage.c common.c) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/perf/pixel-rate.c new/piglit-1~20250217/tests/perf/pixel-rate.c --- old/piglit-1~20250108/tests/perf/pixel-rate.c 1970-01-01 01:00:00.000000000 +0100 +++ new/piglit-1~20250217/tests/perf/pixel-rate.c 2025-02-17 07:25:02.000000000 +0100 @@ -0,0 +1,279 @@ +/* + * Copyright (C) 2025 Advanced Micro Devices, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * VMWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * Measure pixel throughput with different numbers of fragment shader inputs, + * qualifiers, and system values. + */ + +#include "common.h" +#include <stdbool.h> +#undef NDEBUG +#include <assert.h> +#include "piglit-util-gl.h" + +/* this must be a power of two to prevent precision issues */ +#define WINDOW_SIZE 1024 + +PIGLIT_GL_TEST_CONFIG_BEGIN + + config.supports_gl_compat_version = 10; + config.window_width = WINDOW_SIZE; + config.window_height = WINDOW_SIZE; + config.window_visual = PIGLIT_GL_VISUAL_RGBA | PIGLIT_GL_VISUAL_DOUBLE; + +PIGLIT_GL_TEST_CONFIG_END + +static unsigned gpu_freq_mhz; + +typedef struct { + const char *name; + bool sample_shading; + const char *vs; + const char *fs; + GLuint prog; +} prog_info; + +#define VS_SET_POSITION " gl_Position = vec4(gl_VertexID % 2 == 1 ? 1.0 : -1.0, gl_VertexID / 2 == 1 ? 1.0 : -1.0, 0.0, 1.0);\n" + +#define VS_POS \ + "#version 400\n" \ + "void main() {\n" \ + VS_SET_POSITION \ + "}\n" + +#define FS_OUT(v) \ + "#version 400\n" \ + "void main() {\n" \ + " gl_FragColor = vec4(" v ");\n" \ + "}" + +#define INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, sysval, sysval_code) \ + {#n " inputs " qual linear sysval, \ + sample_shading, \ + \ + "#version 400\n" \ + "noperspective out vec4 varnp;\n" \ + qual_code " out vec4 var["#n"];\n" \ + "void main() {\n" \ + " float id = float(gl_VertexID);\n" \ + " varnp = vec4(id, id*id, id*id*id, id*id*id*id);\n" \ + " var[0].x = id;\n" \ + " for (int i = 1; i < ("#n" - (" linear_code " ? 1 : 0)) * 4; i++) var[i / 4][i % 4] = var[(i - 1) / 4][(i - 1) % 4] * id;\n" \ + VS_SET_POSITION \ + "}\n", \ + \ + "#version 400\n" \ + "noperspective in vec4 varnp;\n" \ + qual_code " in vec4 var["#n"];\n" /* the last one is unused, it will be eliminated by the GLSL compiler */ \ + "void main() {\n" \ + " vec4 v = " linear_code " ? varnp : vec4(1.0);\n" \ + " for (int i = 0; i < ("#n" - (" linear_code " ? 1 : 0)); i++) v *= var[i];\n" \ + " gl_FragColor = v + " sysval_code ";\n" \ + "}\n"} + +#define INPUTS_Q(n, sample_shading, qual, qual_code, linear, linear_code) \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code,, "vec4(0.0)"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+Face", "vec4(gl_FrontFacing)"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+SampleMask", "vec4(gl_SampleMaskIn[0])"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.x", "gl_FragCoord.xxxx"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.y", "gl_FragCoord.yyyy"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.z", "gl_FragCoord.zzzz"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.w", "gl_FragCoord.wwww"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xy", "gl_FragCoord.xyyy"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.zw", "gl_FragCoord.zwww"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xyz", "gl_FragCoord.xyzz"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xyw", "gl_FragCoord.xyww"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xyzw", "gl_FragCoord"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xy+Face", "gl_FragCoord.xyyy + vec4(gl_FrontFacing)"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xy+SampleMask", "gl_FragCoord.xyyy + vec4(gl_SampleMaskIn[0])"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xy+Face+SampleMask", "gl_FragCoord.xyyy + vec4(gl_FrontFacing) + vec4(gl_SampleMaskIn[0])"), \ + INPUTS_PROG(n, sample_shading, qual, qual_code, linear, linear_code, "+FragPos.xyzw+Face+SampleMask", "gl_FragCoord + vec4(gl_FrontFacing) + vec4(gl_SampleMaskIn[0])"), \ + INPUTS_PROG(n, true, qual, qual_code, linear, linear_code, "+SampleID", "vec4(gl_SampleID)"), \ + INPUTS_PROG(n, true, qual, qual_code, linear, linear_code, "+SampleID+FragPos.xy", "vec4(gl_SampleID) + gl_FragCoord.xyyy"), \ + INPUTS_PROG(n, true, qual, qual_code, linear, linear_code, "+SampleID+SampleMask", "vec4(gl_SampleID) + vec4(gl_SampleMaskIn[0])"), \ + INPUTS_PROG(n, true, qual, qual_code, linear, linear_code, "+SampleID+FragPos.xyzw+Face+SampleMask", "vec4(gl_SampleID) + gl_FragCoord + vec4(gl_FrontFacing) + vec4(gl_SampleMaskIn[0])") + +#define INPUT1(n) \ + INPUTS_Q(n, false, "flat", "flat", "", "false"), \ + INPUTS_Q(n, false, "persp",, "", "false"), \ + INPUTS_Q(n, true, "sample", "sample", "", "false") + +#define INPUTS(n) \ + INPUTS_Q(n, false, "persp",, "", "false"), \ + INPUTS_Q(n, false, "persp",, "+linear", "true"), \ + INPUTS_Q(n, true, "sample", "sample", "", "false"), \ + INPUTS_Q(n, true, "sample", "sample", "+linear", "true") + +static prog_info progs[] = { + {"Empty", false, VS_POS, + "#version 400\n" + "void main() {\n" + "}"}, + + {"Empty+discard", false, VS_POS, + "#version 400\n" + "void main() {\n" + " discard;\n" + "}"}, + + {"Const fill", false, VS_POS, FS_OUT("0.5, 0.4, 0.3, 0.2")}, + + {"Face", false, VS_POS, FS_OUT("gl_FrontFacing")}, + {"SampleMask", false, VS_POS, FS_OUT("gl_SampleMaskIn[0]")}, + {"FragPos.x", false, VS_POS, FS_OUT("gl_FragCoord.x")}, + {"FragPos.y", false, VS_POS, FS_OUT("gl_FragCoord.y")}, + {"FragPos.z", false, VS_POS, FS_OUT("gl_FragCoord.z")}, + {"FragPos.w", false, VS_POS, FS_OUT("gl_FragCoord.w")}, + {"FragPos.xy", false, VS_POS, FS_OUT("gl_FragCoord.xyyy")}, + {"FragPos.zw", false, VS_POS, FS_OUT("gl_FragCoord.zwww")}, + {"FragPos.xyz", false, VS_POS, FS_OUT("gl_FragCoord.xyzz")}, + {"FragPos.xyw", false, VS_POS, FS_OUT("gl_FragCoord.xyww")}, + {"FragPos.xyzw", false, VS_POS, FS_OUT("gl_FragCoord")}, + {"FragPos.xy+Face", false, VS_POS, FS_OUT("gl_FragCoord.xyyy + vec4(gl_FrontFacing)")}, + {"FragPos.xy+SampleMask", false, VS_POS, FS_OUT("gl_FragCoord.xyyy + vec4(gl_SampleMaskIn[0])")}, + {"FragPos.xy+Face+SampleMask", false, VS_POS, FS_OUT("gl_FragCoord.xyyy + vec4(gl_FrontFacing) + vec4(gl_SampleMaskIn[0])")}, + {"FragPos.xyzw+Face+SampleMask", false, VS_POS, FS_OUT("gl_FragCoord + vec4(gl_FrontFacing) + vec4(gl_SampleMaskIn[0])")}, + {"SampleID", true, VS_POS, FS_OUT("vec4(gl_SampleID)")}, + {"SamplePos", true, VS_POS, FS_OUT("gl_SamplePosition.xyyy")}, + {"SampleID+SamplePos", true, VS_POS, FS_OUT("vec4(gl_SampleID) + gl_SamplePosition.xyyy")}, + {"SampleID+SampleMask", true, VS_POS, FS_OUT("vec4(gl_SampleID) + vec4(gl_SampleMaskIn[0])")}, + {"SampleID+SamplePos+SampleMask", true, VS_POS, FS_OUT("vec4(gl_SampleID) + gl_SamplePosition.xyyy + vec4(gl_SampleMaskIn[0])")}, + {"SampleID+FragPos.xy", true, VS_POS, FS_OUT("vec4(gl_SampleID) + gl_FragCoord.xyyy")}, + {"SampleID+FragPos.z", true, VS_POS, FS_OUT("vec4(gl_SampleID) + gl_FragCoord.zzzz")}, + {"SampleID+FragPos.xyzw", true, VS_POS, FS_OUT("vec4(gl_SampleID) + gl_FragCoord")}, + {"SampleID+SamplePos+SampleMask+FragPos.xyzw+Face", true, VS_POS, FS_OUT("vec4(gl_SampleID) + gl_SamplePosition.xyyy + vec4(gl_SampleMaskIn[0]) + gl_FragCoord.xyzw + vec4(gl_FrontFacing)")}, + + INPUT1(1), + INPUTS(2), + INPUTS(3), + INPUTS(4), + INPUTS(5), + INPUTS(6), + INPUTS(7), + INPUTS(8), +}; + +typedef struct { + const char *name; + GLenum format; + unsigned num_samples; + GLuint fbo; +} fb_info; + +static fb_info fbs[] = { + {"RGBA8 1s", GL_RGBA8, 0}, + {"RGBA8 4s", GL_RGBA8, 4}, + {"RGBA16F 1s", GL_RGBA16F, 0}, + {"RGBA16F 4s", GL_RGBA16F, 4}, +}; + +void +piglit_init(int argc, char **argv) +{ + for (unsigned i = 1; i < argc; i++) { + if (strncmp(argv[i], "-freq=", 6) == 0) + sscanf(argv[i] + 6, "%u", &gpu_freq_mhz); + } + + piglit_require_gl_version(40); + + for (unsigned i = 0; i < ARRAY_SIZE(progs); i++) + progs[i].prog = piglit_build_simple_program(progs[i].vs, progs[i].fs); + + for (unsigned i = 0; i < ARRAY_SIZE(fbs); i++) { + GLuint rb; + glGenRenderbuffers(1, &rb); + glBindRenderbuffer(GL_RENDERBUFFER, rb); + glRenderbufferStorageMultisample(GL_RENDERBUFFER, fbs[i].num_samples, + fbs[i].format, 1024, 1024); + + glGenFramebuffers(1, &fbs[i].fbo); + glBindFramebuffer(GL_FRAMEBUFFER, fbs[i].fbo); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_RENDERBUFFER, rb); + bool status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + assert(status); + } +} + +static void +run_draw(unsigned iterations) +{ + for (unsigned i = 0; i < iterations; i++) + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); +} + +enum piglit_result +piglit_display(void) +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (getenv("TEST")) { + glUseProgram(progs[1].prog); + run_draw(1); + piglit_swap_buffers(); + return PIGLIT_PASS; + } + + printf(" %-60s, %s\n", "Fragment shader", gpu_freq_mhz ? "Samples/clock," : "GSamples/second"); + + printf("%*s", 62, ""); + for (unsigned j = 0; j < ARRAY_SIZE(fbs); j++) { + printf(",%10s", fbs[j].name); + } + puts(""); + + /* Warm up. */ + glUseProgram(progs[0].prog); + perf_measure_gpu_rate(run_draw, 0.01); + + for (unsigned i = 0; i < ARRAY_SIZE(progs); i++) { + printf(" %-60s", progs[i].name); + glUseProgram(progs[i].prog); + + for (unsigned j = 0; j < ARRAY_SIZE(fbs); j++) { + if (progs[i].sample_shading && fbs[j].num_samples <= 1) { + printf(", n/a"); + fflush(stdout); + continue; + } + glBindFramebuffer(GL_FRAMEBUFFER, fbs[j].fbo); + + double rate = perf_measure_gpu_rate(run_draw, 0.01); + rate *= (double)piglit_width * piglit_height * + (progs[i].sample_shading ? fbs[j].num_samples : 1); + + if (gpu_freq_mhz) { + rate /= gpu_freq_mhz * 1000000.0; + printf(",%10.2f", rate); + } else { + printf(",%10.2f", rate / 1000000000); + } + fflush(stdout); + } + puts(""); + } + + exit(0); + return PIGLIT_SKIP; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/arb_clear_texture/common.c new/piglit-1~20250217/tests/spec/arb_clear_texture/common.c --- old/piglit-1~20250108/tests/spec/arb_clear_texture/common.c 2025-01-08 20:18:27.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/arb_clear_texture/common.c 2025-02-17 07:25:02.000000000 +0100 @@ -176,7 +176,7 @@ static bool check_texels_partial_clear(GLenum format, GLenum type, GLsizei texelSize) { - const bool is_float = (format == GL_DEPTH_COMPONENT); + const bool is_float = (format == GL_DEPTH_COMPONENT) || (type == GL_FLOAT); GLubyte *data, *p; bool success = true; int x, y; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/arb_direct_state_access/gettextureimage-formats.c new/piglit-1~20250217/tests/spec/arb_direct_state_access/gettextureimage-formats.c --- old/piglit-1~20250108/tests/spec/arb_direct_state_access/gettextureimage-formats.c 2025-01-08 20:18:27.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/arb_direct_state_access/gettextureimage-formats.c 2025-02-17 07:25:02.000000000 +0100 @@ -529,6 +529,8 @@ } } + glDisable(GL_DITHER); + glGenTextures(1, &texture_id); glBindTexture(GL_TEXTURE_2D, texture_id); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/arb_program_interface_query/getprogramresourceindex.c new/piglit-1~20250217/tests/spec/arb_program_interface_query/getprogramresourceindex.c --- old/piglit-1~20250108/tests/spec/arb_program_interface_query/getprogramresourceindex.c 2025-01-08 20:18:27.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/arb_program_interface_query/getprogramresourceindex.c 2025-02-17 07:25:02.000000000 +0100 @@ -167,7 +167,7 @@ { vs_aofa, GL_PROGRAM_INPUT, "vs_input2", false, -1, GL_NO_ERROR }, { vs_aofa, GL_PROGRAM_INPUT, "vs_input2[0]", true, -1, GL_NO_ERROR }, { vs_aofa, GL_PROGRAM_INPUT, "vs_input2[0][0]", true, -1, GL_NO_ERROR }, - { vs_aofa, GL_PROGRAM_INPUT, "vs_input2[1][0]", false, -1, GL_NO_ERROR }, + { vs_aofa, GL_PROGRAM_INPUT, "vs_input2[1][0]", true, -1, GL_NO_ERROR }, { vs_aofa, GL_PROGRAM_INPUT, "vs_input2[0][1]", false, -1, GL_NO_ERROR }, { vs_sub, GL_VERTEX_SUBROUTINE, "vss", true, -1, GL_NO_ERROR }, { vs_sub, GL_VERTEX_SUBROUTINE, "vss2", true, -1, GL_NO_ERROR }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/glx_arb_create_context/no-error.c new/piglit-1~20250217/tests/spec/glx_arb_create_context/no-error.c --- old/piglit-1~20250108/tests/spec/glx_arb_create_context/no-error.c 2025-01-08 20:18:27.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/glx_arb_create_context/no-error.c 2025-02-17 07:25:02.000000000 +0100 @@ -57,43 +57,40 @@ ctx = glXCreateContextAttribsARB(dpy, fbconfig, NULL, True, attribs); XSync(dpy, 0); - if (glx_error_code != -1) { - if ((debug || robust)) { - /* KHR_no_error doesn't allow the no error mode to be enabled - * with KHR_debug or ARB_robustness, so context creation is - * expected to fail in these cases. - * - * From the ARB_create_context_no_error spec: - * - * "BadMatch is generated if the GLX_CONTEXT_OPENGL_NO_ERROR_ARB is TRUE at - * the same time as a debug or robustness context is specified." - */ - if (!validate_glx_error_code(BadMatch, -1)) { - printf("error: incorrect context creation error code\n"); - result = PIGLIT_FAIL; - goto done; - } - - printf("info: context creation failed (expected)\n"); - result = PIGLIT_PASS; + /* KHR_no_error doesn't allow the no error mode to be enabled + * with KHR_debug or ARB_robustness, so context creation is + * expected to fail in these cases. + * + * From the ARB_create_context_no_error spec: + * + * "BadMatch is generated if the GLX_CONTEXT_OPENGL_NO_ERROR_ARB is TRUE at + * the same time as a debug or robustness context is specified." + */ + if (debug || robust) { + if (ctx) { + printf("error: context creation should have failed\n"); + result = PIGLIT_FAIL; goto done; } - - /* Most likely the API/version is not supported. */ - result = PIGLIT_SKIP; - goto done; - } - if (ctx == NULL) { - printf("error: context creation failed\n"); - result = PIGLIT_FAIL; - goto done; - } - - if (!glXMakeContextCurrent(dpy, glxWin, glxWin, ctx)) { - printf("error: created OpenGL context, but could not make it " - "current\n"); - result = PIGLIT_FAIL; + if (!validate_glx_error_code(BadMatch, -1)) { + printf("error: incorrect context creation error code\n"); + result = PIGLIT_FAIL; + goto done; + } + result = PIGLIT_PASS; goto done; + } else { + if (!ctx) { + printf("error: context creation failed\n"); + result = PIGLIT_FAIL; + goto done; + } + if (!glXMakeContextCurrent(dpy, glxWin, glxWin, ctx)) { + printf("error: created OpenGL context, but could not make it " + "current\n"); + result = PIGLIT_FAIL; + goto done; + } } if (!is_dispatch_init) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration-mismatch.vert new/piglit-1~20250217/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration-mismatch.vert --- old/piglit-1~20250108/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration-mismatch.vert 1970-01-01 01:00:00.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration-mismatch.vert 2025-02-17 07:25:02.000000000 +0100 @@ -0,0 +1,23 @@ +// [config] +// expect_result: fail +// glsl_version: 1.30 +// require_extensions: GL_OVR_multiview +// check_link: false +// [end config] +// +// From the OVR_multiview spec: +// +// "If this layout qualifier is declared more than once in the same shader, +// all those declarations must set num_views to the same value; otherwise a +// compile-time error results." +// + +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 3) in; +layout(num_views = 2) in; + +void main() { + gl_Position = vec4(1.0); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration.vert new/piglit-1~20250217/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration.vert --- old/piglit-1~20250108/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration.vert 1970-01-01 01:00:00.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/ovr_multiview/compiler/multiple-num-views-in-single-declaration.vert 2025-02-17 07:25:02.000000000 +0100 @@ -0,0 +1,23 @@ +// [config] +// expect_result: pass +// glsl_version: 1.30 +// require_extensions: GL_OVR_multiview +// check_link: false +// [end config] +// +// From the OVR_multiview spec: +// +// "If this layout qualifier is declared more than once in the same shader, +// all those declarations must set num_views to the same value; otherwise a +// compile-time error results." +// + +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 3) in; +layout(num_views = 3) in; + +void main() { + gl_Position = vec4(1.0); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/ovr_multiview/linker/match_viewcount.shader_test new/piglit-1~20250217/tests/spec/ovr_multiview/linker/match_viewcount.shader_test --- old/piglit-1~20250108/tests/spec/ovr_multiview/linker/match_viewcount.shader_test 1970-01-01 01:00:00.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/ovr_multiview/linker/match_viewcount.shader_test 2025-02-17 07:25:02.000000000 +0100 @@ -0,0 +1,26 @@ +# If multiple vertex shaders attached to a single program +# object declare num_views, the declarations must be +# identical; otherwise a link-time error results. + +[require] +GLSL >= 1.30 +GL_OVR_multiview + +[vertex shader] +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 2) in; + +[vertex shader] +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 2) in; + +void main() { + gl_Position = vec4(1.0); +} + +[test] +link success diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/ovr_multiview/linker/mismatch_viewcount.shader_test new/piglit-1~20250217/tests/spec/ovr_multiview/linker/mismatch_viewcount.shader_test --- old/piglit-1~20250108/tests/spec/ovr_multiview/linker/mismatch_viewcount.shader_test 1970-01-01 01:00:00.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/ovr_multiview/linker/mismatch_viewcount.shader_test 2025-02-17 07:25:02.000000000 +0100 @@ -0,0 +1,26 @@ +# If multiple vertex shaders attached to a single program +# object declare num_views, the declarations must be +# identical; otherwise a link-time error results. + +[require] +GLSL >= 1.30 +GL_OVR_multiview + +[vertex shader] +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 2) in; + +[vertex shader] +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 3) in; + +void main() { + gl_Position = vec4(1.0); +} + +[test] +link error diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/spec/ovr_multiview/linker/multiple_shaders_single_num_view_declaration.shader_test new/piglit-1~20250217/tests/spec/ovr_multiview/linker/multiple_shaders_single_num_view_declaration.shader_test --- old/piglit-1~20250108/tests/spec/ovr_multiview/linker/multiple_shaders_single_num_view_declaration.shader_test 1970-01-01 01:00:00.000000000 +0100 +++ new/piglit-1~20250217/tests/spec/ovr_multiview/linker/multiple_shaders_single_num_view_declaration.shader_test 2025-02-17 07:25:02.000000000 +0100 @@ -0,0 +1,19 @@ +[require] +GLSL >= 1.30 +GL_OVR_multiview + +[vertex shader] +#version 130 +#extension GL_OVR_multiview : require + +layout(num_views = 2) in; + +[vertex shader] +#version 130 + +void main() { + gl_Position = vec4(1.0); +} + +[test] +link success diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/piglit-1~20250108/tests/util/piglit-glx-util.c new/piglit-1~20250217/tests/util/piglit-glx-util.c --- old/piglit-1~20250108/tests/util/piglit-glx-util.c 2025-01-08 20:18:27.000000000 +0100 +++ new/piglit-1~20250217/tests/util/piglit-glx-util.c 2025-02-17 07:25:02.000000000 +0100 @@ -284,6 +284,7 @@ int i, j; bool any_fail = false; bool any_pass = false; + bool any_warn = false; Window root_win; int *depths, n_depths; @@ -330,7 +331,7 @@ fprintf(stderr, "fbconfig %d has GLX_PIXMAP_BIT but there " "is no pixmap format for depth %d, this " "is a server bug\n", id, depth); - any_fail = true; + any_warn = true; continue; } @@ -357,6 +358,8 @@ if (any_fail) return PIGLIT_FAIL; + else if (any_warn) + return PIGLIT_WARN; else if (any_pass) return PIGLIT_PASS; else ++++++ piglit.obsinfo ++++++ --- /var/tmp/diff_new_pack.cgtaxB/_old 2025-02-19 16:00:35.085177126 +0100 +++ /var/tmp/diff_new_pack.cgtaxB/_new 2025-02-19 16:00:35.089177294 +0100 @@ -1,5 +1,5 @@ name: piglit -version: 1~20250108 -mtime: 1736363907 -commit: 631b72944f56e688f56a08d26c8a9f3988801a08 +version: 1~20250217 +mtime: 1739773502 +commit: a8821ad30633ac892b557f7b9d2708908674f5d4