diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f094b3b244c..43cb49a53d2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -346,7 +346,7 @@ android_build: x86_test-base: extends: x86_build-base variables: - MESA_IMAGE_TAG: &x86_test-base "2020-12-17-install-ci-fairy" + MESA_IMAGE_TAG: &x86_test-base "2020-01-14-asan" .use-x86_test-base: extends: @@ -362,13 +362,13 @@ x86_test-base: x86_test-gl: extends: .use-x86_test-base variables: - MESA_IMAGE_TAG: &x86_test-gl "2020-01-13-piglit" + MESA_IMAGE_TAG: &x86_test-gl "2020-01-14-asan" # Debian 10 based x86 test image for VK x86_test-vk: extends: .use-x86_test-base variables: - MESA_IMAGE_TAG: &x86_test-vk "2020-01-13-piglit" + MESA_IMAGE_TAG: &x86_test-vk "2020-01-14-asan" # Debian 10 based ARM build image arm_build: @@ -607,6 +607,7 @@ meson-testing-asan: EXTRA_OPTION: > -D b_sanitize=address UPLOAD_FOR_LAVA: "" + ARTIFACTS_DEBUG_SYMBOLS: 1 meson-clover-testing: extends: @@ -1235,6 +1236,17 @@ softpipe-gles31: DEQP_VER: gles31 extends: softpipe-gles2 +softpipe-asan-gles31: + variables: + GPU_VERSION: softpipe-asan + DEQP_FRACTION: 10 + DEQP_VER: gles31 + TEST_LD_PRELOAD: libasan.so.5 + extends: softpipe-gles2 + needs: + - x86_test-gl + - meson-testing-asan + softpipe-piglit-quick: extends: - .piglit-test diff --git a/.gitlab-ci/container/x86_test-base.sh b/.gitlab-ci/container/x86_test-base.sh index fd4cb7eca4c..c60e0cd8664 100644 --- a/.gitlab-ci/container/x86_test-base.sh +++ b/.gitlab-ci/container/x86_test-base.sh @@ -32,6 +32,7 @@ apt-get dist-upgrade -y apt-get install -y --no-remove \ git \ git-lfs \ + libasan5 \ libexpat1 \ libllvm10 \ libllvm9 \ diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh index b6515abc0b3..090ff4df3a1 100755 --- a/.gitlab-ci/deqp-runner.sh +++ b/.gitlab-ci/deqp-runner.sh @@ -189,13 +189,17 @@ check_renderer() { # debug. # export EGL_LOG_LEVEL=debug VERSION=`echo $DEQP_VER | tr '[a-z]' '[A-Z]'` + export LD_PRELOAD=$TEST_LD_PRELOAD $DEQP $DEQP_OPTIONS --deqp-case=$SUITE-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa + export LD_PRELOAD= parse_renderer } check_vk_device_name() { echo "Capturing device info for VK driver sanity checks" + export LD_PRELOAD=$TEST_LD_PRELOAD $DEQP $DEQP_OPTIONS --deqp-case=dEQP-VK.info.device --deqp-log-filename=$RESULTS/deqp-info.qpa + export LD_PRELOAD= DEVICENAME=`grep deviceName $RESULTS/deqp-info.qpa | sed 's|deviceName: ||g'` echo "deviceName: $DEVICENAME" if [ -n "$DEQP_EXPECTED_RENDERER" -a "x$DEVICENAME" != "x$DEQP_EXPECTED_RENDERER" ]; then @@ -241,9 +245,12 @@ fi RESULTS_CSV=$RESULTS/results.csv FAILURES_CSV=$RESULTS/failures.csv +export LD_PRELOAD=$TEST_LD_PRELOAD + run_cts $DEQP /tmp/case-list.txt $RESULTS_CSV DEQP_EXITCODE=$? +export LD_PRELOAD= quiet report_load # Remove all but the first 50 individual XML files uploaded as artifacts, to diff --git a/.gitlab-ci/deqp-softpipe-asan-fails.txt b/.gitlab-ci/deqp-softpipe-asan-fails.txt new file mode 100644 index 00000000000..854921c897c --- /dev/null +++ b/.gitlab-ci/deqp-softpipe-asan-fails.txt @@ -0,0 +1,135 @@ +dEQP-GLES31.functional.compute.shared_var.basic_type.int_mediump,Missing +dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_12x10_rgba.srgb8_alpha8_astc_12x10_khr_rgba_astc_12x10_khr.texture3d_to_cubemap,Missing +dEQP-GLES31.functional.copy_image.compressed.viewclass_astc_8x6_rgba.srgb8_alpha8_astc_8x6_khr_srgb8_alpha8_astc_8x6_khr.texture2d_array_to_cubemap,Missing +dEQP-GLES31.functional.copy_image.compressed.viewclass_etc2_rgba.srgb8_punchthrough_alpha1_etc2_rgb8_punchthrough_alpha1_etc2.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_srgb8_alpha8_astc_6x5_khr.texture2d_to_cubemap,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_rg11_eac.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x10_khr.cubemap_to_cubemap,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32i_srgb8_alpha8_astc_12x12_khr.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_rgba_astc_12x12_khr.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32ui_srgb8_alpha8_astc_12x10_khr.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_12x10_khr_rgba32i.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba_astc_4x4_khr_rgba32f.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.srgb8_alpha8_astc_8x6_khr_rgba32ui.cubemap_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32f.texture2d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.r11_eac_rg32i.cubemap_to_texture3d,Missing +dEQP-GLES31.functional.copy_image.mixed.viewclass_64_bits_mixed.rg32i_signed_r11_eac.texture2d_array_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_128_bits.rgba32ui_rgba32i.texture3d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.r16ui_rg8_snorm.texture3d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_16_bits.rg8_snorm_rg8.texture2d_to_texture2d_array,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rg16ui_r32ui.texture2d_array_to_texture3d,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2_rgb10_a2.texture2d_array_to_renderbuffer,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.rgb10_a2ui_rg16i.texture2d_array_to_renderbuffer,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_r11f_g11f_b10f.texture2d_array_to_cubemap,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_32_bits.srgb8_alpha8_rgb9_e5.renderbuffer_to_texture2d_array,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_48_bits.rgb16ui_rgb16ui.cubemap_to_texture2d_array,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16f_rg32i.texture3d_to_texture2d,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_64_bits.rgba16ui_rgba16f.cubemap_to_texture3d,Missing +dEQP-GLES31.functional.copy_image.non_compressed.viewclass_96_bits.rgb32ui_rgb32f.cubemap_to_texture3d,Missing +dEQP-GLES31.functional.debug.negative_coverage.get_error.advanced_blend.blend_qualifier_mismatch,Missing +dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_fbo_format_mismatch,Fail +dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.vertex_attrib_format,Missing +dEQP-GLES31.functional.debug.negative_coverage.log.shader_function.bitfield_insert_invalid_base_type,Missing +dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.0,Fail +dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.10,Fail +dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.0,Fail +dEQP-GLES31.functional.fbo.no_attachments.multisample.samples2,Fail +dEQP-GLES31.functional.geometry_shading.emit.triangle_strip_emit_1_end_2,Crash +dEQP-GLES31.functional.image_load_store.buffer.atomic.max_r32ui_result,Missing +dEQP-GLES31.functional.image_load_store.cube.store.r32i_single_layer,Missing +dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_stencil_fbo,Fail +dEQP-GLES31.functional.layout_binding.image.image3d.vertex_binding_multiple,Missing +dEQP-GLES31.functional.layout_binding.negative.image.image3d.vertex_binding_neg_array,Missing +dEQP-GLES31.functional.program_interface_query.buffer_variable.is_row_major.named_block_col_major.row_major.var,Missing +dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_vertex_tess_geo_fragment,Missing +dEQP-GLES31.functional.program_interface_query.program_input.type.interface_blocks.in.named_block.struct.float,Missing +dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.array.uvec3,Missing +dEQP-GLES31.functional.program_interface_query.program_output.is_per_patch.interface_blocks.out.named_block.var_struct,Missing +dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.array_size.separable_vertex.default_block_struct_member,Missing +dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.type.vertex_geo_fragment.whole_array.vec3,Missing +dEQP-GLES31.functional.program_interface_query.uniform.array_stride.named_block.aggregates.ivec3_struct,Missing +dEQP-GLES31.functional.program_interface_query.uniform.location.default_block.opaque_type.iimage_3d,Missing +dEQP-GLES31.functional.program_interface_query.uniform.matrix_row_major.unnamed_block_row_major.row_major.var,Missing +dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_tess_ctrl.block_array.float_array,Missing +dEQP-GLES31.functional.program_interface_query.uniform.resource_list.block_array.var_array,Missing +dEQP-GLES31.functional.program_interface_query.uniform.type.default_block.types.int,Missing +dEQP-GLES31.functional.program_uniform.basic_array_assign_partial.array_in_struct.float_vec4_fragment,Missing +dEQP-GLES31.functional.program_uniform.by_pointer.render.basic.mat2x3_row_major_both,Missing +dEQP-GLES31.functional.program_uniform.by_pointer.render.nested_structs_arrays.int_ivec4_both,Missing +dEQP-GLES31.functional.program_uniform.by_value.render.array_in_struct.uint_uvec4_both,Missing +dEQP-GLES31.functional.separate_shader.api.active_program_uniform,Missing +dEQP-GLES31.functional.shaders.arrays_of_arrays.es31.parameter.out.float_3x3_fragment,Missing +dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.assignment.explicit_to_implicit.vec3_1x3_fragment,Missing +dEQP-GLES31.functional.shaders.arrays_of_arrays.es32.constructor.implicit.ivec3_3x2x1_fragment,Missing +dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_tess_eval,Missing +dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_tess_eval,Missing +dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_lowp_geometry,Missing +dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_mediump_geometry,Missing +dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_vertex,Missing +dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_mediump_geometry,Missing +dEQP-GLES31.functional.shaders.builtin_functions.precision.acos.lowp_compute.scalar,Missing +dEQP-GLES31.functional.shaders.framebuffer_fetch.framebuffer_format.r8ui,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es31.array_subscripts.subscript_before_input.ivec3_to_vec3_vertex,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es31.array_subscripts.subscript_before_input.uint_to_vec4_vertex,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es31.comparisons.literal_before_input.greater_or_equal.int_to_float_vertex,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es31.invalid.structs.ivec2_to_uvec2_vertex,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es31.parenthesized_expressions.paren_expr_before_literal.input_outside_parens.int_to_float_vertex,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es32.arithmetic.input_before_literal.mul.uint_to_vec4_vertex,Missing +dEQP-GLES31.functional.shaders.implicit_conversions.es32.invalid.variables.vec4_to_uvec2_vertex,Missing +dEQP-GLES31.functional.shaders.linkage.es32.tessellation_geometry.varying.types.uint,Missing +dEQP-GLES31.functional.shaders.linkage.es32.tessellation.varying.types.uvec2,Missing +dEQP-GLES31.functional.shaders.opaque_type_indexing.atomic_counter.uniform_geometry,Missing +dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_expression.tessellation_control.isampler2d,Missing +dEQP-GLES31.functional.shaders.opaque_type_indexing.sampler.const_literal.compute.isampler2darray,Missing +dEQP-GLES31.functional.shaders.opaque_type_indexing.ubo.dynamically_uniform_geometry,Crash +dEQP-GLES31.functional.ssbo.layout.2_level_array.packed.row_major_mat4x2,Missing +dEQP-GLES31.functional.ssbo.layout.basic_unsized_array.packed.uvec3,Missing +dEQP-GLES31.functional.ssbo.layout.random.nested_structs.22,Missing +dEQP-GLES31.functional.ssbo.layout.single_basic_array.shared.row_major_mat3x4,Missing +dEQP-GLES31.functional.state_query.integer.debug_logged_messages_getboolean,Missing +dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples_getinteger64,Fail +dEQP-GLES31.functional.state_query.integer.max_patch_vertices_getinteger64,Missing +dEQP-GLES31.functional.state_query.integer.max_vertex_shader_storage_blocks_getinteger64,Missing +dEQP-GLES31.functional.state_query.texture.texture_2d_multisample_array.texture_immutable_levels_integer,Fail +dEQP-GLES31.functional.state_query.texture.texture_2d_multisample.texture_immutable_format_pure_uint,Fail +dEQP-GLES31.functional.texture.border_clamp.formats.srgb8.nearest_size_pot,Missing +dEQP-GLES31.functional.texture.border_clamp.per_axis_wrap_mode.texture_2d.float_color.gather.s_mirrored_repeat_t_clamp_to_border_pot,Missing +dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_linear_mirror_repeat,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.combinations.nearest_mipmap_nearest_linear_clamp_repeat,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb10_a2_nearest_mipmap_nearest,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgb5_a1_nearest,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba16f_nearest_mipmap_nearest,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.formats.rgba8_nearest_mipmap_linear,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.sizes.128x128x12_nearest_mipmap_linear,Fail +dEQP-GLES31.functional.texture.filtering.cube_array.sizes.63x63x18_nearest_mipmap_nearest,Fail +dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.no_corners.size_pot.mirrored_repeat_clamp_to_edge,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.base_level.level_2,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_npot.compare_less.mirrored_repeat_clamp_to_edge,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_npot.clamp_to_edge_repeat,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8.texture_swizzle.blue_alpha_zero_one,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.texture_swizzle.blue_alpha_zero_one,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.base_level.level_1,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.depth32f.size_npot.compare_less.repeat_mirrored_repeat,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.min_nearest_mipmap_nearest_mag_nearest,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.mirrored_repeat_clamp_to_edge,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8.texture_swizzle.green_blue_alpha_zero,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.implementation_offset.2d.rgba8ui.texture_swizzle.green_blue_alpha_zero,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.depth32f.size_npot.compare_greater.clamp_to_edge_repeat,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8i.size_npot.mirrored_repeat_clamp_to_edge,Fail +dEQP-GLES31.functional.texture.gather.offset_dynamic.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat,Fail +dEQP-GLES31.functional.texture.gather.offset.implementation_offset.2d_array.rgba8.texture_swizzle.red_green_blue_alpha,Missing +dEQP-GLES31.functional.texture.gather.offset.min_required_offset.2d.rgba8i.size_npot.clamp_to_edge_repeat,Missing +dEQP-GLES31.functional.texture.multisample.samples_1.sample_position,Missing +dEQP-GLES31.functional.texture.multisample.samples_8.sample_mask_and_sample_coverage_and_alpha_to_coverage,Missing +dEQP-GLES31.functional.texture.specification.texstorage3d.format.rgb10_a2ui_cube_array,Missing +dEQP-GLES31.functional.ubo.2_level_array.std140.column_major_mat3_vertex,Missing +dEQP-GLES31.functional.ubo.3_level_array.packed.mat4_fragment,Missing +dEQP-GLES31.functional.ubo.3_level_array.shared.row_major_mat4x2_vertex,Missing +dEQP-GLES31.functional.uniform_location.min_max.ivec3_fragment_max,Missing +dEQP-GLES31.functional.uniform_location.struct.case_9,Missing diff --git a/.gitlab-ci/prepare-artifacts.sh b/.gitlab-ci/prepare-artifacts.sh index d03bd286ee9..edbfa599f53 100755 --- a/.gitlab-ci/prepare-artifacts.sh +++ b/.gitlab-ci/prepare-artifacts.sh @@ -18,7 +18,9 @@ if [ -n "$CROSS" ]; then else STRIP="strip" fi -find install -name \*.so -exec $STRIP {} \; +if [ -z "$ARTIFACTS_DEBUG_SYMBOLS"]; then + find install -name \*.so -exec $STRIP {} \; +fi # Test runs don't pull down the git tree, so put the dEQP helper # script and associated bits there.