11 : m_instance(instance),
12 m_getPhysDevPresSupport(
nullptr),
29 m_getPhysDevPresSupport =
reinterpret_cast<PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR
>(
31 if (!m_getPhysDevPresSupport)
32 qWarning(
"Failed to find vkGetPhysicalDeviceXcbPresentationSupportKHR");
36 uint32_t queueFamilyIndex,
44 qWarning(
"Attempted to call supportsPresent() without a valid platform window");
47 xcb_connection_t *
connection =
w->xcbScreen()->xcb_connection();
48 bool ok = m_getPhysDevPresSupport(physicalDevice, queueFamilyIndex,
connection,
w->visualId());
50 VkSurfaceKHR surface = QVulkanInstance::surfaceForWindow(
window);
51 VkBool32 supported =
false;
53 ok &= bool(supported);
60 VkSurfaceKHR surface = VK_NULL_HANDLE;
62 if (!m_createSurface) {
63 m_createSurface =
reinterpret_cast<PFN_vkCreateXcbSurfaceKHR
>(
66 if (!m_createSurface) {
67 qWarning(
"Failed to find vkCreateXcbSurfaceKHR");
71 VkXcbSurfaceCreateInfoKHR surfaceInfo;
72 memset(&surfaceInfo, 0,
sizeof(surfaceInfo));
73 surfaceInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
74 surfaceInfo.connection =
window->xcbScreen()->xcb_connection();
75 surfaceInfo.window =
window->xcb_window();
76 VkResult err = m_createSurface(
m_vkInst, &surfaceInfo,
nullptr, &surface);
77 if (err != VK_SUCCESS)
78 qWarning(
"Failed to create Vulkan surface: %d", err);
87 qWarning(
"Attempted to call presentQueued() without a valid platform window");
92 w->postSyncWindowRequest();
The QVulkanInstance class represents a native Vulkan instance, enabling Vulkan rendering onto a QSurf...
VkSurfaceKHR createSurface(QXcbWindow *window)
QXcbVulkanInstance(QVulkanInstance *instance)
void createOrAdoptInstance() override
void presentQueued(QWindow *window) override
bool supportsPresent(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, QWindow *window) override
Combined button and popup list for selecting options.
#define QByteArrayLiteral(str)
DBusConnection * connection
GLfloat GLfloat GLfloat w
[0]
#define QStringLiteral(str)