summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmma Anholt <emma@anholt.net>2021-11-23 11:25:41 -0800
committerMarge Bot <emma+marge@anholt.net>2021-12-17 19:41:54 +0000
commit39ea803f9fb7fadd19963a99b4fe3cfc9147b073 (patch)
tree203bf339fd78f3d67c772d78ab8a5c5837ec9070
parenta65285f54be6d756a8a558f638c18bb4f075222c (diff)
ci/crocus: Add support for manual CI runs on my G41.
Uses a shared runner at my house so we have an easy way to minimally test crocus. Reviewed-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14238>
-rw-r--r--.gitlab-ci.yml3
-rw-r--r--.gitlab-ci/test-source-dep.yml17
-rw-r--r--src/gallium/drivers/crocus/ci/crocus-g41-fails.txt291
-rw-r--r--src/gallium/drivers/crocus/ci/crocus-g41-flakes.txt11
-rw-r--r--src/gallium/drivers/crocus/ci/crocus-g41-skips.txt8
-rw-r--r--src/gallium/drivers/crocus/ci/deqp-crocus-g41.toml23
-rw-r--r--src/gallium/drivers/crocus/ci/gitlab-ci.yml41
-rw-r--r--src/gallium/drivers/crocus/ci/traces-crocus-g41.yml52
8 files changed, 445 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6b7024cc8f5..6a08e101ae9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -50,6 +50,7 @@ include:
- local: 'src/broadcom/ci/gitlab-ci.yml'
- local: 'src/etnaviv/ci/gitlab-ci.yml'
- local: 'src/freedreno/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/crocus/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/d3d12/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/i915/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/iris/ci/gitlab-ci.yml'
@@ -711,7 +712,7 @@ debian-testing:
GALLIUM_ST: >
-D dri3=enabled
-D gallium-va=enabled
- GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,iris,i915"
+ GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915"
VULKAN_DRIVERS: "swrast,amd"
BUILDTYPE: "debugoptimized"
EXTRA_OPTION: >
diff --git a/.gitlab-ci/test-source-dep.yml b/.gitlab-ci/test-source-dep.yml
index 811cd339291..adf38369cac 100644
--- a/.gitlab-ci/test-source-dep.yml
+++ b/.gitlab-ci/test-source-dep.yml
@@ -428,6 +428,23 @@
when: on_success
- when: never
+.crocus-rules:
+ stage: intel
+ rules:
+ - *ignore_scheduled_pipelines
+ - changes:
+ *mesa_core_file_list
+ when: on_success
+ - changes:
+ *gallium_core_file_list
+ when: on_success
+ - changes:
+ - src/gallium/drivers/crocus/**/*
+ - src/gallium/winsys/crocus/**/*
+ - src/intel/**/*
+ when: on_success
+ - when: never
+
.iris-rules:
stage: intel
rules:
diff --git a/src/gallium/drivers/crocus/ci/crocus-g41-fails.txt b/src/gallium/drivers/crocus/ci/crocus-g41-fails.txt
new file mode 100644
index 00000000000..5f6961fe1ca
--- /dev/null
+++ b/src/gallium/drivers/crocus/ci/crocus-g41-fails.txt
@@ -0,0 +1,291 @@
+KHR-GLES2.core.internalformat.texture2d.depth_component_unsigned_int_depth_component16,Fail
+KHR-GLES2.core.internalformat.texture2d.depth_component_unsigned_int_depth_component24,Fail
+KHR-GLES2.core.internalformat.texture2d.depth_component_unsigned_short_depth_component16,Fail
+KHR-GLES2.core.internalformat.texture2d.rgb_float_rgb32f,Fail
+KHR-GLES2.core.internalformat.texture2d.rgb_float_rgb32f_linear,Fail
+KHR-GLES2.core.internalformat.texture2d.rgba_float_rgba32f,Fail
+KHR-GLES2.core.internalformat.texture2d.rgba_float_rgba32f_linear,Fail
+KHR-GLES2.texture_3d.copy_sub_image.negative,Fail
+KHR-GLES2.texture_3d.copy_sub_image.rgba,Fail
+
+# Missing the red triangle
+dEQP-GLES2.functional.clip_control.depth_mode_zero_to_one,Fail
+
+# Clipped wide primitives not rendered when the ceneter is offscreen
+dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_center,Fail
+dEQP-GLES2.functional.clipping.line.wide_line_clip_viewport_corner,Fail
+dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail
+dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail
+dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner,Fail
+
+# Bad slope of clipped triangles
+dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_x_pos_z_and_neg_x_neg_y_neg_z,Fail
+dEQP-GLES2.functional.clipping.triangle_vertex.clip_two.clip_neg_y_neg_z_and_neg_x_neg_y_pos_z,Fail
+
+# RGB/RGBA half float should be incomplete, tested as complete.
+dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgb_half_float_oes,Fail
+dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.rgba_half_float_oes,Fail
+
+dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide,Fail
+dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide,Fail
+dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide,Fail
+dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide,Fail
+dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide,Fail
+dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide,Fail
+
+dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod,Fail
+
+# Subpixel precision errors
+dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_l8_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgb888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba4444_npot,Fail
+dEQP-GLES2.functional.texture.filtering.2d.nearest_linear_clamp_rgba8888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_l8_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgb888_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba4444_npot,Fail
+dEQP-GLES2.functional.texture.filtering.cube.nearest_linear_clamp_rgba8888_npot,Fail
+dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear,Fail
+dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest,Fail
+dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear,Fail
+dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest,Fail
+dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear,Fail
+dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_clamp,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_mirror,Fail
+dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_linear_repeat,Fail
+dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp,Fail
+dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror,Fail
+dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat,Fail
+dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp,Fail
+dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror,Fail
+dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat,Fail
+
+# No info, just piglit fail result.
+shaders@glsl-bug-110796,Fail
+
+# "glsl-routing: ../src/intel/compiler/brw_fs_visitor.cpp:155: fs_reg fs_visitor::interp_reg(int, int): Assertion `prog_data->urb_setup[location] >= 0' failed."
+shaders@glsl-routing,Crash
+
+# Regression from i965
+# "glCallLists(bitmaps) failed
+# glCallLists(bitmaps) inside display list failed"
+spec@!opengl 1.0@gl-1.0-dlist-bitmap,Fail
+
+# frontbuffer reading failures?
+spec@!opengl 1.0@gl-1.0-swapbuffers-behavior,Fail
+spec@!opengl 1.1@read-front,Fail
+spec@!opengl 1.1@read-front clear-front-first,Fail
+spec@!opengl 1.1@windowoverlap,Fail
+
+# Regression from i965
+spec@!opengl 1.1@depthstencil-default_fb-blit,Fail
+
+spec@!opengl 1.1@line-aa-width,Fail
+spec@!opengl 1.1@line-flat-clip-color,Fail
+spec@!opengl 1.1@linestipple,Fail
+spec@!opengl 1.1@linestipple@Factor 2x,Fail
+spec@!opengl 1.1@linestipple@Factor 3x,Fail
+spec@!opengl 1.1@linestipple@Line loop,Fail
+spec@!opengl 1.1@linestipple@Line strip,Fail
+
+# abort()s submitting batchbuffer on context close, after some GL_OOMs.
+spec@!opengl 1.1@max-texture-size,Crash
+
+spec@!opengl 1.4@gl-1.4-polygon-offset,Fail
+
+# Regression from i965
+# "Unexpected GL error: GL_INVALID_VALUE 0x501"
+spec@!opengl 2.0@max-samplers,Fail
+spec@!opengl 2.0@max-samplers border,Fail
+
+# "Fail: nothing rendered."
+spec@!opengl 2.0@vs-point_size-zero,Fail
+
+# Regression from i965
+# "data not copied"
+spec@arb_copy_buffer@targets,Fail
+
+# "../src/mesa/state_tracker/st_cb_copyimage.c:309:swizzled_copy: Assertion `src_desc->block.bits == dst_desc->block.bits' failed."
+spec@arb_copy_image@arb_copy_image-formats,Crash
+
+# Regression from i965
+spec@arb_depth_buffer_float@fbo-generatemipmap-formats,Fail
+spec@arb_depth_buffer_float@fbo-generatemipmap-formats@GL_DEPTH_COMPONENT32F,Fail
+spec@arb_depth_buffer_float@fbo-generatemipmap-formats@GL_DEPTH_COMPONENT32F NPOT,Fail
+
+spec@arb_depth_buffer_float@texwrap formats bordercolor,Fail
+spec@arb_depth_buffer_float@texwrap formats bordercolor-swizzled,Fail
+spec@arb_depth_buffer_float@texwrap formats bordercolor-swizzled@GL_DEPTH32F_STENCIL8- swizzled- border color only,Fail
+spec@arb_depth_buffer_float@texwrap formats bordercolor-swizzled@GL_DEPTH_COMPONENT32F- swizzled- border color only,Fail
+spec@arb_depth_buffer_float@texwrap formats bordercolor@GL_DEPTH32F_STENCIL8- border color only,Fail
+spec@arb_depth_buffer_float@texwrap formats bordercolor@GL_DEPTH_COMPONENT32F- border color only,Fail
+
+# test bug: "Failed to compile fragment shader: 0:1(10): error: GLSL 1.30 is not supported. Supported versions are: 1.10, 1.20, and 1.00 ES"
+spec@arb_framebuffer_object@fbo-drawbuffers-none use_frag_out,Fail
+
+# "Left: textureCube, Right: textureCubeGradARB
+# Probe color at (80,78)
+# Left: 0.678431 0.333333 0.000000 1.000000
+# Right: 0.647059 0.349020 0.000000 1.000000"
+spec@arb_shader_texture_lod@execution@arb_shader_texture_lod-texgradcube,Fail
+
+# Regression from i965
+spec@arb_texture_cube_map@copyteximage cube,Fail
+
+# Regressions from i965: i965 would demote these 32-bit internalformats to
+# 16-bit so that texture filtering worked, since GL 2.1 let you do that.
+# Crocus instead decided to follow r300 and other GL2 hardware in using the
+# requested size for storage even if the HW can't filter textures with it.
+spec@arb_texture_float@fbo-blending-formats,Fail
+spec@arb_texture_float@fbo-blending-formats@GL_LUMINANCE32F_ARB,Fail
+spec@arb_texture_rg@fbo-blending-formats-float,Fail
+spec@arb_texture_rg@fbo-blending-formats-float@GL_RG32F,Fail
+spec@arb_texture_float@texwrap formats bordercolor,Fail
+spec@arb_texture_float@texwrap formats bordercolor-swizzled,Fail
+spec@arb_texture_float@texwrap formats bordercolor-swizzled@GL_INTENSITY32F_ARB- swizzled- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor-swizzled@GL_LUMINANCE32F_ARB- swizzled- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor-swizzled@GL_LUMINANCE_ALPHA32F_ARB- swizzled- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor-swizzled@GL_RGB32F- swizzled- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor-swizzled@GL_RGBA32F- swizzled- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor@GL_INTENSITY32F_ARB- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor@GL_LUMINANCE32F_ARB- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor@GL_LUMINANCE_ALPHA32F_ARB- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor@GL_RGB32F- border color only,Fail
+spec@arb_texture_float@texwrap formats bordercolor@GL_RGBA32F- border color only,Fail
+spec@arb_texture_rg@texwrap formats-float bordercolor,Fail
+spec@arb_texture_rg@texwrap formats-float bordercolor-swizzled,Fail
+spec@arb_texture_rg@texwrap formats-float bordercolor-swizzled@GL_R32F- swizzled- border color only,Fail
+spec@arb_texture_rg@texwrap formats-float bordercolor-swizzled@GL_RG32F- swizzled- border color only,Fail
+spec@arb_texture_rg@texwrap formats-float bordercolor@GL_R32F- border color only,Fail
+spec@arb_texture_rg@texwrap formats-float bordercolor@GL_RG32F- border color only,Fail
+
+# test bug: "ERROR - Duplicate subtest found, marking test failed: cube array texture"
+spec@arb_texture_storage@texture-storage@cube array texture,Fail
+
+# Regression from i965
+spec@arb_vertex_buffer_object@vbo-subdata-many drawarrays,Fail
+spec@arb_vertex_buffer_object@vbo-subdata-many drawelements,Fail
+
+spec@egl 1.4@eglterminate then unbind context,Fail
+
+spec@egl_ext_protected_content@conformance,Fail
+
+# "piglit: error: failed to get EGLConfig: EGL_NOT_INITIALIZED(0x3001)"
+spec@egl_khr_gl_image@egl_khr_gl_renderbuffer_image-clear-shared-image gl_depth_component24,Fail
+spec@egl_khr_gl_image@egl_khr_gl_renderbuffer_image-clear-shared-image gl_rgba,Fail
+
+# "eglInitialize() failed"
+spec@egl_khr_surfaceless_context@viewport,Fail
+
+# Regression from i965
+spec@ext_draw_buffers2@fbo-drawbuffers2-blend,Fail
+
+spec@ext_draw_instanced@ext_draw_instanced-drawarrays,Fail
+
+# "Failed blit src(0,0;1,1) - dst(0,0;2147483647,2147483647)
+# Failed blit src(0,0;40,40) - dst(0,0;134217727,134217727)
+# Failed blit src(0,0;40,40) - dst(0,0;2147483647,2147483647)
+# Failed blit src(0,0;80,80) - dst(0,0;134217727,134217727)
+# Failed blit src(0,0;80,80) - dst(0,0;2147483647,2147483647)
+# Failed blit src(0,0;160,160) - dst(0,0;134217727,134217727)
+# Failed blit src(0,0;160,160) - dst(0,0;2147483647,2147483647)
+# Failed blit src(0,0;2147483647,2147483647) - dst(0,0;2147483647,2147483647)"
+spec@ext_framebuffer_blit@fbo-blit-check-limits,Fail
+
+# "../src/mesa/state_tracker/st_atom_blend.c:156:blend_per_rt: Assertion `st->has_indep_blend_func' failed."
+spec@ext_framebuffer_object@fbo-blending-format-quirks,Crash
+
+# "piglit: error: Failed at level 1, slice 1"
+spec@ext_gpu_shader4@execution@texelfetch@fs-texelfetch-isampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetch@fs-texelfetch-sampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetch@fs-texelfetch-usampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetch@vs-texelfetch-isampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetch@vs-texelfetch-sampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetch@vs-texelfetch-usampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetchoffset@fs-texelfetch-isampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetchoffset@fs-texelfetch-sampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetchoffset@fs-texelfetch-usampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetchoffset@vs-texelfetch-isampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetchoffset@vs-texelfetch-sampler3d,Fail
+spec@ext_gpu_shader4@execution@texelfetchoffset@vs-texelfetch-usampler3d,Fail
+
+# "Stopping after 100 failures
+# Summary: -1/100 passed"
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texture() 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texture() 2darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texture() cubeshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texture(bias) 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texture(bias) 2darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texture(bias) cubeshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegrad 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegrad 2darray,Crash
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegrad 2darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegrad cubeshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegradoffset 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegradoffset 2darray,Crash
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturegradoffset 2darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturelod 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4texturelodoffset 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4textureoffset 1darrayshadow,Fail
+spec@ext_gpu_shader4@tex-miplevel-selection gpu4textureoffset 2darrayshadow,Fail
+
+# Regression from i965
+# "Testing GL_LUMINANCE16F_ARB
+# Expected: (1, 1, 1, 0)
+# Actual: (1, 1, 1, 1)"
+spec@ext_packed_float@query-rgba-signed-components,Fail
+
+# "Unexpected GL error: GL_NO_ERROR 0x0
+# (Error at /home/anholt/src/piglit/tests/spec/ext_texture_format_bgra8888/api-errors.c:63)
+# Expected GL error: GL_INVALID_OPERATION 0x502
+# Unexpected GL error: GL_NO_ERROR 0x0
+# (Error at /home/anholt/src/piglit/tests/spec/ext_texture_format_bgra8888/api-errors.c:69)
+# Expected GL error: GL_INVALID_OPERATION 0x502
+# Unexpected GL error: GL_NO_ERROR 0x0
+# (Error at /home/anholt/src/piglit/tests/spec/ext_texture_format_bgra8888/api-errors.c:103)
+# Expected GL error: GL_INVALID_OPERATION 0x502"
+spec@ext_texture_format_bgra8888@api-errors,Fail
+
+# no info, just fails
+spec@intel_performance_query@intel_performance_query-issue_2235,Fail
+
+# "Unexpected GL error: GL_INVALID_ENUM 0x500
+# (Error at /home/anholt/src/piglit/tests/spec/khr_texture_compression_astc/khr_compressed_astc-basic.c:341)
+# Expected GL error: GL_INVALID_OPERATION 0x502"
+spec@khr_texture_compression_astc@basic-gles,Fail
+
+spec@khr_texture_compression_astc@miptree-gl srgb-fp,Fail
+spec@khr_texture_compression_astc@miptree-gl srgb-fp@sRGB decode full precision,Fail
+spec@khr_texture_compression_astc@miptree-gles srgb,Fail
+spec@khr_texture_compression_astc@miptree-gles srgb-fp,Fail
+
+# Regression from i965
+# "primitive-restart: failure drawing with glDrawElements(GL_TRIANGLE_STRIP, GL_UNSIGNED_SHORT), DISABLE_VBO
+# primitive-restart: failure drawing with glDrawElements(GL_TRIANGLE_STRIP, GL_UNSIGNED_INT), DISABLE_VBO
+# primitive-restart: failure drawing with glDrawElements(GL_LINE_STRIP, GL_UNSIGNED_SHORT), DISABLE_VBO
+# primitive-restart: failure drawing with glDrawElements(GL_LINE_STRIP, GL_UNSIGNED_INT), DISABLE_VBO"
+spec@nv_primitive_restart@primitive-restart-disable_vbo,Fail
+
+# Regression from i965
+spec@nv_primitive_restart@primitive-restart-draw-mode-line_loop,Fail
+spec@nv_primitive_restart@primitive-restart-draw-mode-polygon,Fail
+spec@nv_primitive_restart@primitive-restart-draw-mode-quad_strip,Fail
+spec@nv_primitive_restart@primitive-restart-draw-mode-quads,Fail
+spec@nv_primitive_restart@primitive-restart-draw-mode-triangle_fan,Fail
+spec@nv_primitive_restart@primitive-restart-vbo_combined_vertex_and_index,Fail
+spec@nv_primitive_restart@primitive-restart-vbo_vertex_only,Fail
diff --git a/src/gallium/drivers/crocus/ci/crocus-g41-flakes.txt b/src/gallium/drivers/crocus/ci/crocus-g41-flakes.txt
new file mode 100644
index 00000000000..a2bba3bdd5d
--- /dev/null
+++ b/src/gallium/drivers/crocus/ci/crocus-g41-flakes.txt
@@ -0,0 +1,11 @@
+# These seem stable on their own (or when running their whole test group),
+# but intermittently fail when mixed in with other tests.
+dEQP-GLES2.functional.shaders.functions.control_flow.return_after_loop_sequence_fragment
+dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.nested_tricky_dataflow_2_fragment
+dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.nested_tricky_dataflow_2_fragment
+dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.nested_sequence_fragment
+dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.basic_mediump_int_fragment
+dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.nested_sequence_fragment
+
+spec@arb_vertex_buffer_object@vbo-subdata-many drawrangeelements
+spec@arb_vertex_type_2_10_10_10_rev@attribs
diff --git a/src/gallium/drivers/crocus/ci/crocus-g41-skips.txt b/src/gallium/drivers/crocus/ci/crocus-g41-skips.txt
new file mode 100644
index 00000000000..a21c3571371
--- /dev/null
+++ b/src/gallium/drivers/crocus/ci/crocus-g41-skips.txt
@@ -0,0 +1,8 @@
+# Fails or timeouts, many involving a segfault.
+KHR-GLES2.texture_3d.filtering.combinations.*
+KHR-GLES2.texture_3d.filtering.sizes.*
+
+# We aren't running an X server.
+glx.*
+
+max-texture-size
diff --git a/src/gallium/drivers/crocus/ci/deqp-crocus-g41.toml b/src/gallium/drivers/crocus/ci/deqp-crocus-g41.toml
new file mode 100644
index 00000000000..b0b6d16fa60
--- /dev/null
+++ b/src/gallium/drivers/crocus/ci/deqp-crocus-g41.toml
@@ -0,0 +1,23 @@
+[[deqp]]
+deqp = "/deqp/modules/gles2/deqp-gles2"
+caselists = ["/deqp/mustpass/gles2-master.txt"]
+deqp_args = [
+ "--deqp-surface-width=256",
+ "--deqp-surface-height=256",
+ "--deqp-surface-type=pbuffer",
+ "--deqp-gl-config-name=rgba8888d24s8ms0",
+ "--deqp-visibility=hidden"
+]
+version_check = "GL ES 2.0.*git"
+renderer_check = "Intel.*G41"
+
+[[deqp]]
+deqp = "/deqp/external/openglcts/modules/glcts"
+caselists = ["/deqp/mustpass/gles2-khr-master.txt"]
+deqp_args = [
+ "--deqp-surface-width=256",
+ "--deqp-surface-height=256",
+ "--deqp-surface-type=pbuffer",
+ "--deqp-gl-config-name=rgba8888d24s8ms0",
+ "--deqp-visibility=hidden"
+]
diff --git a/src/gallium/drivers/crocus/ci/gitlab-ci.yml b/src/gallium/drivers/crocus/ci/gitlab-ci.yml
new file mode 100644
index 00000000000..5dceb3e628a
--- /dev/null
+++ b/src/gallium/drivers/crocus/ci/gitlab-ci.yml
@@ -0,0 +1,41 @@
+# Manual test rules for using anholt's shared g41.
+.anholt-g41-test:
+ extends:
+ - .crocus-rules
+ - .test-gl
+ - .test-manual-mr
+ tags:
+ - anholt-g41
+ variables:
+ GPU_VERSION: crocus-g41
+
+crocus-g41-deqp:
+ extends:
+ - .anholt-g41-test
+ - .deqp-test
+ variables:
+ DEQP_SUITE: crocus-g41
+
+crocus-g41-piglit:
+ extends:
+ - .anholt-g41-test
+ - .piglit-test
+ variables:
+ PIGLIT_PROFILES: gpu
+ PIGLIT_PLATFORM: gbm
+ artifacts:
+ paths:
+ - results/
+ reports:
+ junit: results/junit.xml
+ script:
+ - install/piglit/piglit-runner.sh
+
+crocus-g41-traces:
+ extends:
+ - .anholt-g41-test
+ - .piglit-traces-test
+ variables:
+ EGL_PLATFORM: "surfaceless"
+ PIGLIT_REPLAY_DESCRIPTION_FILE: "${CI_PROJECT_DIR}/install/traces-crocus-g41.yml"
+ PIGLIT_REPLAY_DEVICE_NAME: "crocus-g41"
diff --git a/src/gallium/drivers/crocus/ci/traces-crocus-g41.yml b/src/gallium/drivers/crocus/ci/traces-crocus-g41.yml
new file mode 100644
index 00000000000..ec3a0a32f3d
--- /dev/null
+++ b/src/gallium/drivers/crocus/ci/traces-crocus-g41.yml
@@ -0,0 +1,52 @@
+traces-db:
+ download-url: "https://minio-packet.freedesktop.org/mesa-tracie-public/"
+
+traces:
+ - path: glxgears/glxgears-2.trace
+ expectations:
+ - device: crocus-g41
+ checksum: 18455018dcfa97f69c967f118551ae30
+ - path: gputest/plot3d.trace
+ expectations:
+ - device: crocus-g41
+ checksum: 1527e6c60462e633dd421104f27c91c5
+ # Requires GLSL 1.30
+ #- path: humus/AmbientAperture.trace
+ # expectations:
+ # - device: crocus-g41
+ # checksum: 8d4c52f0af9c09710d358f24c73fae3c
+ - path: humus/CelShading.trace
+ expectations:
+ - device: crocus-g41
+ checksum: 9b6e185ac8e8e67fc13d84f0ad6c3e3b
+ # Requires GLSL 1.30
+ #- path: humus/DynamicBranching3.trace
+ # expectations:
+ # - device: crocus-g41
+ # checksum: 765fa742b87e411763921c6f988b2573
+ # Requires GLSL 1.30
+ #- path: humus/HDR.trace
+ # expectations:
+ # - device: crocus-g41
+ # checksum: 80b164e85e96a413568d18ce308caae3
+ - path: humus/Portals.trace
+ expectations:
+ - device: crocus-g41
+ checksum: b090e734ed332e259664851576925d7b
+ - path: humus/RaytracedShadows.trace
+ expectations:
+ - device: crocus-g41
+ checksum: dbef340424f4f85eb8dc053ad3a56ae1
+ # Requires GLSL 1.30
+ #- path: humus/VolumetricFogging2.trace
+ # expectations:
+ # - device: crocus-g41
+ # checksum: aec880cec7ba460f3144b789bc517891
+ - path: neverball/neverball.trace
+ expectations:
+ - device: crocus-g41
+ checksum: 0f14a88f511cd886c920238c80017e5d
+ - path: valve/counterstrike-v2.trace
+ expectations:
+ - device: crocus-g41
+ checksum: 90c01e73b3544cb477ac6109bc61bef1