14 : m_instance(instance)
30 m_getPhysDevPresSupport =
reinterpret_cast<PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR
>(
32 if (!m_getPhysDevPresSupport)
33 qWarning() <<
"Failed to find vkGetPhysicalDeviceWaylandPresentationSupportKHR";
37 uint32_t queueFamilyIndex,
45 qWarning() <<
"Attempted to call supportsPresent() without a valid platform window";
48 wl_display *
display =
w->display()->wl_display();
49 bool ok = m_getPhysDevPresSupport(physicalDevice, queueFamilyIndex,
display);
51 VkSurfaceKHR surface = QVulkanInstance::surfaceForWindow(
window);
52 VkBool32 supported =
false;
54 ok &= bool(supported);
61 VkSurfaceKHR surface = VK_NULL_HANDLE;
63 if (!m_createSurface) {
64 m_createSurface =
reinterpret_cast<PFN_vkCreateWaylandSurfaceKHR
>(
67 if (!m_createSurface) {
68 qWarning() <<
"Failed to find vkCreateWaylandSurfaceKHR";
72 VkWaylandSurfaceCreateInfoKHR surfaceInfo;
73 memset(&surfaceInfo, 0,
sizeof(surfaceInfo));
74 surfaceInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
75 surfaceInfo.display =
window->display()->wl_display();
76 surfaceInfo.surface =
window->wlSurface();
77 VkResult err = m_createSurface(
m_vkInst, &surfaceInfo,
nullptr, &surface);
78 if (err != VK_SUCCESS)
79 qWarning(
"Failed to create Vulkan surface: %d", err);
88 qWarning() <<
"Attempted to call presentAboutToBeQueued() without a valid platform window";
96 mFrameCallbackTimeout = frameCallbackTimeout;
98 if (
w->format().swapInterval() > 0)
99 w->waitForFrameSync(mFrameCallbackTimeout);
108 qWarning() <<
"Attempted to call beginFrame() without a valid platform window";
118 qWarning() <<
"Attempted to call endFrame() without a valid platform window";
The QVulkanInstance class represents a native Vulkan instance, enabling Vulkan rendering onto a QSurf...
void createOrAdoptInstance() override
VkSurfaceKHR createSurface(QWaylandWindow *window)
void beginFrame(QWindow *window) override
QWaylandVulkanInstance(QVulkanInstance *instance)
void presentAboutToBeQueued(QWindow *window) override
void endFrame(QWindow *window) override
~QWaylandVulkanInstance() override
bool supportsPresent(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, QWindow *window) override
struct wl_display * display
Combined button and popup list for selecting options.
#define QByteArrayLiteral(str)
GLfloat GLfloat GLfloat w
[0]
#define QStringLiteral(str)
Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept