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:
parent
10d69d5f0b
commit
eb9b092001
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue