diff options
Diffstat (limited to 'src/core/compositor/native_skia_output_device_vulkan.cpp')
-rw-r--r-- | src/core/compositor/native_skia_output_device_vulkan.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/core/compositor/native_skia_output_device_vulkan.cpp b/src/core/compositor/native_skia_output_device_vulkan.cpp index c2ad7a382..b775276f6 100644 --- a/src/core/compositor/native_skia_output_device_vulkan.cpp +++ b/src/core/compositor/native_skia_output_device_vulkan.cpp @@ -4,6 +4,7 @@ #include "native_skia_output_device_vulkan.h" #include "gpu/command_buffer/service/shared_image/shared_image_format_service_utils.h" +#include "ui/base/ozone_buildflags.h" #include <QtGui/qvulkaninstance.h> #include <QtGui/qvulkanfunctions.h> @@ -11,17 +12,17 @@ #include <QtQuick/qsgtexture.h> #if defined(USE_OZONE) -#include "ui/ozone/buildflags.h" -#if BUILDFLAG(OZONE_PLATFORM_X11) +#if BUILDFLAG(IS_OZONE_X11) // We need to define USE_VULKAN_XCB for proper vulkan function pointers. // Avoiding it may lead to call wrong vulkan functions. // This is originally defined in chromium/gpu/vulkan/BUILD.gn. #define USE_VULKAN_XCB -#endif // BUILDFLAG(OZONE_PLATFORM_X11) +#endif // BUILDFLAG(IS_OZONE_X11) #include "gpu/vulkan/vulkan_function_pointers.h" - #include "components/viz/common/gpu/vulkan_context_provider.h" #include "gpu/vulkan/vulkan_device_queue.h" +#include "third_party/skia/include/gpu/vk/GrVkTypes.h" +#include "third_party/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h" #endif // defined(USE_OZONE) namespace QtWebEngineCore { @@ -84,7 +85,8 @@ QSGTexture *NativeSkiaOutputDeviceVulkan::texture(QQuickWindow *win, uint32_t te return nullptr; } - backendTexture.getVkImageInfo(&vkImageInfo); + GrBackendTextures::GetVkImageInfo(backendTexture, &vkImageInfo); + if (vkImageInfo.fAlloc.fMemory == VK_NULL_HANDLE) { qWarning("VULKAN: Unable to access Vulkan memory."); return nullptr; @@ -187,6 +189,7 @@ QSGTexture *NativeSkiaOutputDeviceVulkan::texture(QQuickWindow *win, uint32_t te Q_ASSERT(status == S_OK); status = resource->CreateSharedHandle(NULL, DXGI_SHARED_RESOURCE_READ, NULL, &sharedHandle); Q_ASSERT(status == S_OK); + resource->Release(); if (!sharedHandle) qFatal("VULKAN: Unable to extract shared handle."); @@ -200,7 +203,7 @@ QSGTexture *NativeSkiaOutputDeviceVulkan::texture(QQuickWindow *win, uint32_t te importedImageCreateInfo.pNext = &externalMemoryImageCreateInfo; importedImageCreateInfo.flags = 0; importedImageCreateInfo.imageType = VK_IMAGE_TYPE_2D; - importedImageCreateInfo.format = gpu::ToVkFormat(m_frontBuffer->sharedImageFormat()); + importedImageCreateInfo.format = gpu::ToVkFormatSinglePlanar(m_frontBuffer->sharedImageFormat()); importedImageCreateInfo.extent.width = static_cast<uint32_t>(size().width()); importedImageCreateInfo.extent.height = static_cast<uint32_t>(size().height()); importedImageCreateInfo.extent.depth = 1; |