Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
vulkanserverbufferintegration.h
Go to the documentation of this file.
1// Copyright (C) 2019 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3// Qt-Security score:critical reason:network-protocol
4
5#ifndef VULKANSERVERBUFFERINTEGRATION_H
6#define VULKANSERVERBUFFERINTEGRATION_H
7
8#include <QtWaylandCompositor/private/qwlserverbufferintegration_p.h>
9
10#include "qwayland-server-qt-vulkan-server-buffer-unstable-v1.h"
11
12#include <QtGui/QImage>
13#include <QtGui/QWindow>
14#include <QtGui/qpa/qplatformnativeinterface.h>
15#include <QtGui/QGuiApplication>
16
17#include <QtWaylandCompositor/qwaylandcompositor.h>
18#include <QtWaylandCompositor/private/qwayland-server-server-buffer-extension.h>
19
20QT_BEGIN_NAMESPACE
21
22class VulkanServerBufferIntegration;
23class VulkanWrapper;
25
27{
28public:
29 VulkanServerBuffer(VulkanServerBufferIntegration *integration, const QImage &qimage, QtWayland::ServerBuffer::Format format);
30 VulkanServerBuffer(VulkanServerBufferIntegration *integration, VulkanImageWrapper *vImage, uint glInternalFormat, const QSize &size);
32
33 struct ::wl_resource *resourceForClient(struct ::wl_client *) override;
34 bool bufferInUse() override;
37
38protected:
39 void server_buffer_release(Resource *resource) override;
40
41private:
42 VulkanServerBufferIntegration *m_integration = nullptr;
43
44 int m_width;
45 int m_height;
46 int m_memorySize;
47 int m_fd = -1;
48 VulkanImageWrapper *m_vImage = nullptr;
49 QOpenGLTexture *m_texture = nullptr;
50 uint m_glInternalFormat;
51 GLuint m_memoryObject;
52};
53
57{
58public:
61
62 VulkanWrapper *vulkanWrapper() const { return m_vulkanWrapper; }
63
64 bool initializeHardware(QWaylandCompositor *) override;
65
66 bool supportsFormat(QtWayland::ServerBuffer::Format format) const override;
67 QtWayland::ServerBuffer *createServerBufferFromImage(const QImage &qimage, QtWayland::ServerBuffer::Format format) override;
68 QtWayland::ServerBuffer *createServerBufferFromData(QByteArrayView view, const QSize &size,
69 uint glInternalFormat) override;
70
71private:
72 VulkanWrapper *m_vulkanWrapper = nullptr;
73};
74
75QT_END_NAMESPACE
76
77#endif
bool supportsFormat(QtWayland::ServerBuffer::Format format) const override
bool initializeHardware(QWaylandCompositor *) override
QtWayland::ServerBuffer * createServerBufferFromData(QByteArrayView view, const QSize &size, uint glInternalFormat) override
QtWayland::ServerBuffer * createServerBufferFromImage(const QImage &qimage, QtWayland::ServerBuffer::Format format) override
VulkanServerBuffer(VulkanServerBufferIntegration *integration, const QImage &qimage, QtWayland::ServerBuffer::Format format)
void server_buffer_release(Resource *resource) override
QOpenGLTexture * toOpenGlTexture() override
VulkanServerBuffer(VulkanServerBufferIntegration *integration, VulkanImageWrapper *vImage, uint glInternalFormat, const QSize &size)
int getImageInfo(const VulkanImageWrapper *imgWrapper, int *memSize, int *w=nullptr, int *h=nullptr)
VulkanWrapper(QOpenGLContext *glContext)
void freeTextureImage(VulkanImageWrapper *imageWrapper)
VulkanImageWrapper * createTextureImage(const QImage &img)
#define DECL_GL_FUNCTION(name, type)
#define FIND_GL_FUNCTION(name, type)
static QT_BEGIN_NAMESPACE constexpr bool vsbiExtraDebug
static VulkanServerBufferGlFunctions * funcs
static bool create(QOpenGLContext *glContext)