turnip: Enable VK_EXT_display_control using the common code.

It's all implemented now, so we can turn it back on.  Passes 15/16 tests
when X11 isn't running, and 1/16 when it is, with no failures in either
mode.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15351>
This commit is contained in:
Emma Anholt 2022-03-11 13:14:46 -08:00 committed by Marge Bot
parent 10d69d5f0b
commit eb9b092001
5 changed files with 1 additions and 128 deletions

View File

@ -11,6 +11,3 @@ dEQP-VK.api.command_buffers.record_many_draws_secondary_2
# Sometimes hangchecks
spill-dEQP-VK.graphicsfuzz.spv-stable-maze-O-dead-code
# "dEQP-VK.wsi.display_control.register_display_event: vkRegisterDisplayEventEXT returned invalid result (Fail)"
dEQP-VK.wsi.display_control.register_display_event

View File

@ -95,9 +95,6 @@ dEQP-GLES3.functional.fbo.blit.conversion.rg8_to_r16f
dEQP-VK.api.command_buffers.record_many_draws_primary_2
dEQP-VK.api.command_buffers.record_many_draws_secondary_2
# "dEQP-VK.wsi.display_control.register_display_event: vkRegisterDisplayEventEXT returned invalid result (Fail)"
dEQP-VK.wsi.display_control.register_display_event
# Looks likely to be a hangcheck trigger.
spill-dEQP-VK.graphicsfuzz.cov-nested-loop-large-array-index-using-vector-components

View File

@ -71,7 +71,6 @@ if with_platform_wayland
endif
if system_has_kms_drm and not with_platform_android
libtu_files += files('tu_wsi_display.c')
tu_wsi = true
endif

View File

@ -166,13 +166,7 @@ get_device_extensions(const struct tu_physical_device *device,
.KHR_timeline_semaphore = true,
#endif
#ifdef VK_USE_PLATFORM_DISPLAY_KHR
/* This extension is supported by common code across drivers, but it is
* missing some core functionality and fails
* dEQP-VK.wsi.display_control.register_device_event. Once some variant of
* https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12305 lands,
* then we can re-enable it.
*/
/* .EXT_display_control = true, */
.EXT_display_control = true,
#endif
.EXT_external_memory_dma_buf = true,
.EXT_image_drm_format_modifier = true,

View File

@ -1,114 +0,0 @@
/*
* Copyright © 2017 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
* the above copyright notice appear in all copies and that both that copyright
* notice and this permission notice appear in supporting documentation, and
* that the name of the copyright holders not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. The copyright holders make no representations
* about the suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include <stdbool.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include "tu_private.h"
#include "tu_cs.h"
#include "util/disk_cache.h"
#include "util/strtod.h"
#include "vk_util.h"
#include "vk_format.h"
#include "util/debug.h"
#include "wsi_common_display.h"
#include "vulkan/runtime/vk_common_entrypoints.h"
/* VK_EXT_display_control */
VKAPI_ATTR VkResult VKAPI_CALL
tu_RegisterDeviceEventEXT(VkDevice _device,
const VkDeviceEventInfoEXT *device_event_info,
const VkAllocationCallbacks *allocator,
VkFence *out_fence)
{
TU_FROM_HANDLE(tu_device, device, _device);
VkResult ret;
VkFence _fence;
ret = vk_common_CreateFence(_device, &(VkFenceCreateInfo) {}, allocator, &_fence);
if (ret != VK_SUCCESS)
return ret;
VK_FROM_HANDLE(vk_fence, fence, _fence);
int sync_fd = tu_syncobj_to_fd(device, vk_fence_get_active_sync(fence));
if (sync_fd >= 0) {
ret = wsi_register_device_event(_device,
&device->physical_device->wsi_device,
device_event_info,
allocator,
NULL,
sync_fd);
close(sync_fd);
} else {
ret = VK_ERROR_OUT_OF_HOST_MEMORY;
}
if (ret != VK_SUCCESS)
vk_common_DestroyFence(_device, _fence, allocator);
else
*out_fence = _fence;
return ret;
}
VKAPI_ATTR VkResult VKAPI_CALL
tu_RegisterDisplayEventEXT(VkDevice _device,
VkDisplayKHR display,
const VkDisplayEventInfoEXT *display_event_info,
const VkAllocationCallbacks *allocator,
VkFence *_fence)
{
TU_FROM_HANDLE(tu_device, device, _device);
VkResult ret;
ret = vk_common_CreateFence(_device, &(VkFenceCreateInfo) {}, allocator, _fence);
if (ret != VK_SUCCESS)
return ret;
VK_FROM_HANDLE(vk_fence, fence, *_fence);
int sync_fd = tu_syncobj_to_fd(device, vk_fence_get_active_sync(fence));
if (sync_fd >= 0) {
ret = wsi_register_display_event(_device,
&device->physical_device->wsi_device,
display,
display_event_info,
allocator,
NULL,
sync_fd);
close(sync_fd);
} else {
ret = VK_ERROR_OUT_OF_HOST_MEMORY;
}
if (ret != VK_SUCCESS)
vk_common_DestroyFence(_device, *_fence, allocator);
return ret;
}