ci: Add vulkan dEQP tests for venus
authorOmar Akkila <omar.akkila@collabora.com>
Mon, 25 Oct 2021 07:29:07 +0000 (09:29 +0200)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 4 Aug 2022 13:15:33 +0000 (15:15 +0200)
Co-authored-by: Corentin Noël <corentin.noel@collabora.com>
Signed-off-by: Omar Akkila <omar.akkila@collabora.com>
Acked-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15692>

.gitlab-ci.yml
.gitlab-ci/crosvm-runner.sh
.gitlab-ci/test-source-dep.yml
src/virtio/ci/deqp-venus.toml [new file with mode: 0644]
src/virtio/ci/gitlab-ci.yml [new file with mode: 0644]
src/virtio/ci/venus-fails.txt [new file with mode: 0644]
src/virtio/ci/venus-flakes.txt [new file with mode: 0644]
src/virtio/ci/venus-skips.txt [new file with mode: 0644]

index 0ccb919..b4e05c7 100644 (file)
@@ -78,6 +78,7 @@ include:
   - local: 'src/intel/ci/gitlab-ci.yml'
   - local: 'src/microsoft/ci/gitlab-ci.yml'
   - local: 'src/panfrost/ci/gitlab-ci.yml'
+  - local: 'src/virtio/ci/gitlab-ci.yml'
 
 stages:
   - sanity
index 15e6655..0acd7d7 100755 (executable)
@@ -93,8 +93,9 @@ set +e -x
 NIR_DEBUG="novalidate" \
 LIBGL_ALWAYS_SOFTWARE=${CROSVM_LIBGL_ALWAYS_SOFTWARE} \
 GALLIUM_DRIVER=${CROSVM_GALLIUM_DRIVER} \
+VK_ICD_FILENAMES=$CI_PROJECT_DIR/install/share/vulkan/icd.d/${CROSVM_VK_DRIVER}_icd.x86_64.json \
 crosvm run \
-    --gpu "${CROSVM_GPU_ARGS}" -m 4096 -c 2 --disable-sandbox \
+    --gpu "${CROSVM_GPU_ARGS}" -m "${CROSVM_MEMORY:-4096}" -c 2 --disable-sandbox \
     --shared-dir /:my_root:type=fs:writeback=true:timeout=60:cache=always \
     --host_ip "192.168.30.1" --netmask "255.255.255.0" --mac "AA:BB:CC:00:00:12" \
     -s $VM_SOCKET \
index 3f557f4..58f282f 100644 (file)
         *virgl_file_list
       when: manual
 
+.venus-rules:
+  stage: layered-backends
+  rules:
+    - !reference [.lavapipe-rules, rules]
+    - changes: &venus_file_list
+      - src/virtio/**/*
+      when: on_success
+    - when: never
+
 .radeonsi-rules:
   stage: amd
   rules:
diff --git a/src/virtio/ci/deqp-venus.toml b/src/virtio/ci/deqp-venus.toml
new file mode 100644 (file)
index 0000000..752d7ec
--- /dev/null
@@ -0,0 +1,6 @@
+[[deqp]]
+deqp = "/install/crosvm-runner.sh"
+caselists = [ "/deqp/mustpass/vk-master.txt" ]
+deqp_args = [ "/deqp/external/vulkancts/modules/vulkan/deqp-vk" ]
+timeout = 30.0 # Starting lots of Crosvm instances simultaneously can take some time
+renderer_check = "Virtio-GPU Venus.*llvmpipe"
diff --git a/src/virtio/ci/gitlab-ci.yml b/src/virtio/ci/gitlab-ci.yml
new file mode 100644 (file)
index 0000000..a7117e8
--- /dev/null
@@ -0,0 +1,24 @@
+.venus-lavapipe-test:
+  extends:
+    - .test-vk
+    - .venus-rules
+  variables:
+    VK_DRIVER: virtio
+    CROSVM_GALLIUM_DRIVER: "llvmpipe"
+    CROSVM_VK_DRIVER: "lvp"
+    CROSVM_GPU_ARGS: "vulkan=true,gles=false,backend=virglrenderer,egl=true,surfaceless=true"
+
+venus-lavapipe:
+  extends:
+    - .deqp-test-vk
+    - .venus-lavapipe-test
+  variables:
+    DEQP_FRACTION: 15
+    DEQP_SUITE: venus
+    GPU_VERSION: venus
+    LP_NUM_THREADS: 1 # There will be FDO_CI_CONCURRENT Crosvm processes, so each should use a single thread
+    FDO_CI_CONCURRENT: 32 # Seems to be the fastest value, more gets actually slower
+    CROSVM_MEMORY: 3072
+    FLAKES_CHANNEL: "#virgl-ci"
+  tags:
+    - mesa-swrast
diff --git a/src/virtio/ci/venus-fails.txt b/src/virtio/ci/venus-fails.txt
new file mode 100644 (file)
index 0000000..543fcb6
--- /dev/null
@@ -0,0 +1,16 @@
+# Failures likely due to lavapipe (i.e. the intersection of observed failures and lvp-fails.txt)
+dEQP-VK.glsl.crash_test.divbyzero_comp,Crash
+
+# Full Venus list
+dEQP-VK.multiview.queries.15_15_15_15,Fail
+dEQP-VK.multiview.queries.15,Fail
+dEQP-VK.multiview.queries.5_10_5_10,Fail
+dEQP-VK.multiview.renderpass2.queries.15_15_15_15,Fail
+dEQP-VK.multiview.renderpass2.queries.15,Fail
+dEQP-VK.multiview.renderpass2.queries.5_10_5_10,Fail
+dEQP-VK.pipeline.extended_dynamic_state.after_pipelines.enable_raster,Fail
+dEQP-VK.pipeline.extended_dynamic_state.before_draw.enable_raster,Fail
+dEQP-VK.pipeline.extended_dynamic_state.between_pipelines.enable_raster,Fail
+dEQP-VK.pipeline.extended_dynamic_state.cmd_buffer_start.enable_raster,Fail
+dEQP-VK.pipeline.extended_dynamic_state.two_draws_dynamic.enable_raster,Fail
+dEQP-VK.pipeline.timestamp.calibrated.host_domain_test,Fail
\ No newline at end of file
diff --git a/src/virtio/ci/venus-flakes.txt b/src/virtio/ci/venus-flakes.txt
new file mode 100644 (file)
index 0000000..2c3d10c
--- /dev/null
@@ -0,0 +1,7 @@
+dEQP-VK.synchronization.*16384
+dEQP-VK.synchronization.*262144
+dEQP-VK.spirv_assembly.instruction.graphics.64bit_compare.double.frag_opfordnotequal_nonan_vector
+dEQP-VK.robustness.buffer_access.fragment.vec4_copy.r32_uint.oob_storage_read.range_4_bytes
+dEQP-VK.robustness.buffer_access.fragment.vec4_copy.r32_uint.oob_storage_write.range_32_bytes
+dEQP-VK.robustness.buffer_access.fragment.texel_copy.r32g32b32a32_sfloat.oob_storage_write.range_3_texels
+dEQP-VK.subgroups.ballot_broadcast.compute.subgroupbroadcast_uvec4
\ No newline at end of file
diff --git a/src/virtio/ci/venus-skips.txt b/src/virtio/ci/venus-skips.txt
new file mode 100644 (file)
index 0000000..e67e91b
--- /dev/null
@@ -0,0 +1,2 @@
+# These take so long that cause caselist batches to timeout
+dEQP-VK.pipeline.monolithic.*
\ No newline at end of file