diff --git a/src/amd/ci/radv-gfx1201-fails.txt b/src/amd/ci/radv-gfx1201-fails.txt index a684826774e..f036ab8276c 100644 --- a/src/amd/ci/radv-gfx1201-fails.txt +++ b/src/amd/ci/radv-gfx1201-fails.txt @@ -106,18 +106,6 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack dEQP-VK.wsi.direct_drm.colorspace.basic,Fail dEQP-VK.wsi.direct_drm.colorspace.hdr,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.incremental_present,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.reference,Fail -dEQP-VK.wsi.direct_drm.maintenance1.deferred_alloc.fifo.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.deferred_alloc.fifo.bind_image,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_fence.fifo.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_fence.fifo.ordering,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_modes.fifo.change_modes,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.release_before_present,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire_release_before_retire,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window,Fail # deqp-vk: ../src/vulkan/wsi/wsi_common.c:2579: wsi_common_create_swapchain_image: Assertion `pCreateInfo->extent.width == swcInfo->extent.width' failed. dEQP-VK.wsi.direct_drm.swapchain.create.image_swapchain_create_info_concurrent,Crash diff --git a/src/amd/ci/radv-raven-fails.txt b/src/amd/ci/radv-raven-fails.txt index db4f046f561..08d56e828c8 100644 --- a/src/amd/ci/radv-raven-fails.txt +++ b/src/amd/ci/radv-raven-fails.txt @@ -105,9 +105,6 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack16.512_256_1,Crash dEQP-VK.wsi.direct.colorspace.hdr,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire_release_before_retire,Fail # deqp-vk: ../src/vulkan/wsi/wsi_common.c:2579: wsi_common_create_swapchain_image: Assertion `pCreateInfo->extent.width == swcInfo->extent.width' failed. dEQP-VK.wsi.direct.swapchain.simulate_oom.image_swapchain_create_info_concurrent,Crash diff --git a/src/amd/ci/radv-renoir-fails.txt b/src/amd/ci/radv-renoir-fails.txt index 48be444450d..124a979033e 100644 --- a/src/amd/ci/radv-renoir-fails.txt +++ b/src/amd/ci/radv-renoir-fails.txt @@ -169,21 +169,12 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack16.503_137_1,Crash dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack16.512_256_1,Crash +# Probably https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/6287 +dEQP-VK.wsi.direct_drm.present_timing.time_domain.present_stage_calibration,Fail +dEQP-VK.wsi.direct.present_timing.time_domain.present_stage_calibration,Fail + dEQP-VK.wsi.direct_drm.colorspace.basic,Fail dEQP-VK.wsi.direct_drm.colorspace.hdr,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.incremental_present,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.reference,Fail -dEQP-VK.wsi.direct_drm.maintenance1.deferred_alloc.fifo.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.deferred_alloc.fifo.bind_image,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_fence.fifo.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_fence.fifo.ordering,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_modes.fifo.change_modes,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.release_before_present,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire_release_before_retire,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window,Fail -dEQP-VK.wsi.direct_drm.present_timing.time_domain.present_stage_calibration,Fail dEQP-VK.wsi.direct_drm.swapchain.create.image_sharing_mode,Crash dEQP-VK.wsi.direct_drm.swapchain.create.image_swapchain_create_info_concurrent,Crash dEQP-VK.wsi.direct_drm.swapchain.create.image_swapchain_create_info,Crash @@ -192,19 +183,6 @@ dEQP-VK.wsi.direct_drm.swapchain.simulate_oom.image_swapchain_create_info_concur dEQP-VK.wsi.direct_drm.swapchain.simulate_oom.image_swapchain_create_info,Crash dEQP-VK.wsi.direct.colorspace.basic,Fail dEQP-VK.wsi.direct.colorspace.hdr,Fail -dEQP-VK.wsi.direct.incremental_present.scale_none.fifo.identity.opaque.incremental_present,Fail -dEQP-VK.wsi.direct.incremental_present.scale_none.fifo.identity.opaque.reference,Fail -dEQP-VK.wsi.direct.maintenance1.deferred_alloc.fifo.basic,Fail -dEQP-VK.wsi.direct.maintenance1.deferred_alloc.fifo.bind_image,Fail -dEQP-VK.wsi.direct.maintenance1.present_fence.fifo.basic,Fail -dEQP-VK.wsi.direct.maintenance1.present_fence.fifo.ordering,Fail -dEQP-VK.wsi.direct.maintenance1.present_modes.fifo.change_modes,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.basic,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.release_before_present,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire_release_before_retire,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window,Fail -dEQP-VK.wsi.direct.present_timing.time_domain.present_stage_calibration,Fail dEQP-VK.wsi.direct.swapchain.create.image_sharing_mode,Crash dEQP-VK.wsi.direct.swapchain.create.image_swapchain_create_info_concurrent,Crash dEQP-VK.wsi.direct.swapchain.create.image_swapchain_create_info,Crash diff --git a/src/amd/ci/radv-stoney-fails.txt b/src/amd/ci/radv-stoney-fails.txt index 8c5ac91efc0..0ecc844274d 100644 --- a/src/amd/ci/radv-stoney-fails.txt +++ b/src/amd/ci/radv-stoney-fails.txt @@ -1,5 +1,2 @@ # See https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9049 dEQP-VK.pipeline.timestamp.calibrated.calibration_test,Fail - -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.reference,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.incremental_present,Fail diff --git a/src/amd/ci/radv-vangogh-fails.txt b/src/amd/ci/radv-vangogh-fails.txt index 2799b6b4f41..8af1130c40b 100644 --- a/src/amd/ci/radv-vangogh-fails.txt +++ b/src/amd/ci/radv-vangogh-fails.txt @@ -107,36 +107,12 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r12x4g12x4_unorm_2pack dEQP-VK.wsi.direct_drm.colorspace.basic,Fail dEQP-VK.wsi.direct_drm.colorspace.hdr,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.incremental_present,Fail -dEQP-VK.wsi.direct_drm.incremental_present.scale_none.fifo.identity.opaque.reference,Fail -dEQP-VK.wsi.direct_drm.maintenance1.deferred_alloc.fifo.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.deferred_alloc.fifo.bind_image,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_fence.fifo.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_fence.fifo.ordering,Fail -dEQP-VK.wsi.direct_drm.maintenance1.present_modes.fifo.change_modes,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.basic,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.release_before_present,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire_release_before_retire,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire,Fail -dEQP-VK.wsi.direct_drm.maintenance1.release_images.fifo.no_scaling.resize_window,Fail dEQP-VK.wsi.direct_drm.swapchain.create.image_swapchain_create_info_concurrent,Crash dEQP-VK.wsi.direct_drm.swapchain.create.image_swapchain_create_info,Crash dEQP-VK.wsi.direct_drm.swapchain.simulate_oom.image_swapchain_create_info_concurrent,Crash dEQP-VK.wsi.direct_drm.swapchain.simulate_oom.image_swapchain_create_info,Crash dEQP-VK.wsi.direct.colorspace.basic,Fail dEQP-VK.wsi.direct.colorspace.hdr,Fail -dEQP-VK.wsi.direct.incremental_present.scale_none.fifo.identity.opaque.incremental_present,Fail -dEQP-VK.wsi.direct.incremental_present.scale_none.fifo.identity.opaque.reference,Fail -dEQP-VK.wsi.direct.maintenance1.deferred_alloc.fifo.basic,Fail -dEQP-VK.wsi.direct.maintenance1.deferred_alloc.fifo.bind_image,Fail -dEQP-VK.wsi.direct.maintenance1.present_fence.fifo.basic,Fail -dEQP-VK.wsi.direct.maintenance1.present_fence.fifo.ordering,Fail -dEQP-VK.wsi.direct.maintenance1.present_modes.fifo.change_modes,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.basic,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.release_before_present,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire_release_before_retire,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window_after_acquire,Fail -dEQP-VK.wsi.direct.maintenance1.release_images.fifo.no_scaling.resize_window,Fail dEQP-VK.wsi.direct.swapchain.create.image_swapchain_create_info_concurrent,Crash dEQP-VK.wsi.direct.swapchain.create.image_swapchain_create_info,Crash dEQP-VK.wsi.direct.swapchain.simulate_oom.image_swapchain_create_info_concurrent,Crash diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c index 2b599ed9b9b..8717f2310d1 100644 --- a/src/vulkan/wsi/wsi_common_display.c +++ b/src/vulkan/wsi/wsi_common_display.c @@ -2860,7 +2860,7 @@ _wsi_display_convert_hdr_metadata(VkHdrMetadataEXT *pMetadata, uint8_t hdmi_eotf } static int -drm_atomic_commit(wsi_display_connector *connector, struct wsi_display_image *image) +drm_atomic_commit(wsi_display_connector *connector, struct wsi_display_image *image, bool test_only) { const drmModeModeInfo *mode = &connector->current_drm_mode; int fd = connector->wsi->fd; @@ -2947,6 +2947,11 @@ drm_atomic_commit(wsi_display_connector *connector, struct wsi_display_image *im drmModeAtomicAddProperty(req, plane_id, prop[CRTC_W], mode->hdisplay); drmModeAtomicAddProperty(req, plane_id, prop[CRTC_H], mode->vdisplay); + if (test_only) { + flags |= DRM_MODE_ATOMIC_TEST_ONLY; + flags &= ~DRM_MODE_PAGE_FLIP_EVENT; + } + ret = drmModeAtomicCommit(fd, req, flags, image); if (ret) goto out; @@ -2977,7 +2982,7 @@ _wsi_display_cleanup_state(struct wsi_display_swapchain *chain) if (chain->color_outcome_serial) { chain->color_outcome_serial = 0; chain->base.image_info.color_space = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR; - drm_atomic_commit(connector, &chain->images[0]); + drm_atomic_commit(connector, &chain->images[0], false); } } @@ -3122,7 +3127,7 @@ _wsi_display_queue_next(struct wsi_swapchain *drv_chain) image->state = WSI_IMAGE_QUEUED; - int ret = drm_atomic_commit(connector, image); + int ret = drm_atomic_commit(connector, image, false); if (ret == 0) { image->state = WSI_IMAGE_FLIPPING; connector->active = true; @@ -3410,6 +3415,28 @@ wsi_display_surface_create_swapchain( create_info, drm_format, &chain->images[image]); + + /* Check that we could actually possibly atomic commit to this plane. This + * catches cases where the swapchain exceeds some limits of the hardware + * that we couldn't tell from the probed properties. + * + * There is text explicitly allowing this error code for "exclusive + * full-screen mode" (which is not actually what DRM KHR_display is by + * spec, though we are giving exclusive full-screen access!), but this is + * what the CTS expects to find for unsupported swapchains. + */ + if (result == VK_SUCCESS) { + ret = drm_atomic_commit(display_mode->connector, &chain->images[image], true); + if (ret != 0) { + wsi_display_debug("Atomic commit check for %dx%d %s, failed: %s\n", + create_info->imageExtent.width, + create_info->imageExtent.height, + util_format_short_name(vk_format_to_pipe_format(create_info->imageFormat)), + strerror(-errno)); + result = VK_ERROR_INITIALIZATION_FAILED; + } + } + if (result != VK_SUCCESS) { while (image > 0) { --image;