summaryrefslogtreecommitdiffstats
path: root/src/gui/doc/snippets/code
diff options
context:
space:
mode:
authorPaul Wicking <paul.wicking@qt.io>2020-08-28 19:26:44 +0200
committerPaul Wicking <paul.wicking@qt.io>2020-09-01 06:11:50 +0200
commit1ca85a2fd14d3838df165fbf0ccf898a340743cf (patch)
treef0091bc40c9324b08c006d900a66dee917686781 /src/gui/doc/snippets/code
parent4074c542708b4e7e605a63745e9d6072f24f5a44 (diff)
Doc: Compile GUI vulkan snippets
Fix minor issues (e.g. whitespace, missing semi-colon) in passing. Change-Id: Ia16a7793b999e7ffd8d387fa3826117a4ade2c41 Done-with: Nico Vertriest <nico.vertriest@qt.io> Task-number: QTBUG-81486 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/gui/doc/snippets/code')
-rw-r--r--src/gui/doc/snippets/code/code.pro5
-rw-r--r--src/gui/doc/snippets/code/src_gui_vulkan_qvulkanfunctions.cpp58
-rw-r--r--src/gui/doc/snippets/code/src_gui_vulkan_qvulkaninstance.cpp136
-rw-r--r--src/gui/doc/snippets/code/src_gui_vulkan_qvulkanwindow.cpp136
4 files changed, 209 insertions, 126 deletions
diff --git a/src/gui/doc/snippets/code/code.pro b/src/gui/doc/snippets/code/code.pro
index f71c7b1480..ee2c0d1c52 100644
--- a/src/gui/doc/snippets/code/code.pro
+++ b/src/gui/doc/snippets/code/code.pro
@@ -42,4 +42,7 @@ SOURCES = \
src_gui_text_qtextdocumentwriter.cpp \
src_gui_text_qtextlayout.cpp \
src_gui_util_qdesktopservices.cpp \
- src_gui_util_qvalidator.cpp
+ src_gui_util_qvalidator.cpp \
+ src_gui_vulkan_qvulkanfunctions.cpp \
+ src_gui_vulkan_qvulkaninstance.cpp \
+ src_gui_vulkan_qvulkanwindow.cpp
diff --git a/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanfunctions.cpp b/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanfunctions.cpp
index 0d13873f38..df08418581 100644
--- a/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanfunctions.cpp
+++ b/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanfunctions.cpp
@@ -48,23 +48,51 @@
**
****************************************************************************/
+#include <QVulkanDeviceFunctions>
+#include <QVulkanFunctions>
+#include <QVulkanInstance>
+
+namespace src_gui_vulkan_qvulkanfunctions {
+
+struct Window {
+ void render();
+ QVulkanInstance *vulkanInstance() { return nullptr; }
+};
+VkDevice_T *device = nullptr;
+VkCommandBufferAllocateInfo cmdBufInfo;
+VkCommandBuffer cmdBuf;
+
//! [0]
- void Window::render()
- {
- QVulkanInstance *inst = vulkanInstance();
- QVulkanFunctions *f = inst->functions();
- ...
- VkResult err = f->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
- ...
- }
+void Window::render()
+{
+ QVulkanInstance *inst = vulkanInstance();
+ QVulkanFunctions *f = inst->functions();
+ // ...
+ VkResult err = f->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
+ // ...
+}
//! [0]
+} // namespace src_gui_vulkan_qvulkanfunctions {
+
+
+namespace src_gui_vulkan_qvulkanfunctions2 {
+struct Window {
+ void render();
+ QVulkanInstance *vulkanInstance() { return nullptr; }
+};
+VkDevice_T *device = nullptr;
+VkCommandBufferAllocateInfo cmdBufInfo;
+VkCommandBuffer cmdBuf;
+
//! [1]
- void Window::render()
- {
- QVulkanInstance *inst = vulkanInstance();
- QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
- VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
- ...
- }
+void Window::render()
+{
+ QVulkanInstance *inst = vulkanInstance();
+ QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
+ VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
+ // ...
+}
//! [1]
+
+} // src_gui_vulkan_qvulkanfunctions2
diff --git a/src/gui/doc/snippets/code/src_gui_vulkan_qvulkaninstance.cpp b/src/gui/doc/snippets/code/src_gui_vulkan_qvulkaninstance.cpp
index 14ef9ed2d4..0ce6492b12 100644
--- a/src/gui/doc/snippets/code/src_gui_vulkan_qvulkaninstance.cpp
+++ b/src/gui/doc/snippets/code/src_gui_vulkan_qvulkaninstance.cpp
@@ -48,6 +48,20 @@
**
****************************************************************************/
+#include <QGuiApplication>
+#include <QVulkanFunctions>
+#include <QVulkanInstance>
+#include <QWindow>
+
+namespace src_gui_vulkan_qvulkaninstance {
+
+struct Window {
+ void setVulkanInstance(QVulkanInstance *instance) { Q_UNUSED(instance); }
+ void show();
+};
+Window *window = nullptr;
+
+
//! [0]
int main(int argc, char **argv)
{
@@ -57,7 +71,7 @@
if (!inst.create())
return 1;
- ...
+ // ...
window->setVulkanInstance(&inst);
window->show();
@@ -65,6 +79,8 @@
}
//! [0]
+
+void wrapper0() {
//! [1]
QVulkanInstance inst;
@@ -72,75 +88,91 @@
inst.setLayers(QByteArrayList() << "VK_LAYER_LUNARG_standard_validation");
bool ok = inst.create();
- if (!ok)
- ... // Vulkan not available
- if (!inst.layers().contains("VK_LAYER_LUNARG_standard_validation"))
- ... // validation layer not available
+ if (!ok) {
+ // ... Vulkan not available
+ }
+
+ if (!inst.layers().contains("VK_LAYER_LUNARG_standard_validation")) {
+ // ... validation layer not available
+ }
//! [1]
+}
+
+void wrapper1() {
//! [2]
QVulkanInstance inst;
- if (inst.supportedLayers().contains("VK_LAYER_LUNARG_standard_validation"))
- ...
-
+ if (inst.supportedLayers().contains("VK_LAYER_LUNARG_standard_validation")) {
+ // ...
+ }
bool ok = inst.create();
- ...
+ // ...
//! [2]
+Q_UNUSED(ok);
+} // wrapper1
+} // src_gui_vulkan_qvulkaninstance
+
+
+namespace src_gui_vulkan_qvulkaninstance2 {
+
//! [3]
- class VulkanWindow : public QWindow
- {
- public:
- VulkanWindow() {
- setSurfaceType(VulkanSurface);
- }
+class VulkanWindow : public QWindow
+{
+public:
+ VulkanWindow() {
+ setSurfaceType(VulkanSurface);
+ }
- void exposeEvent(QExposeEvent *) {
- if (isExposed()) {
- if (!m_initialized) {
- m_initialized = true;
- // initialize device, swapchain, etc.
- QVulkanInstance *inst = vulkanInstance();
- QVulkanFunctions *f = inst->functions();
- uint32_t devCount = 0;
- f->vkEnumeratePhysicalDevices(inst->vkInstance(), &devCount, nullptr);
- ...
- // build the first frame
- render();
- }
+ void exposeEvent(QExposeEvent *) {
+ if (isExposed()) {
+ if (!m_initialized) {
+ m_initialized = true;
+ // initialize device, swapchain, etc.
+ QVulkanInstance *inst = vulkanInstance();
+ QVulkanFunctions *f = inst->functions();
+ uint32_t devCount = 0;
+ f->vkEnumeratePhysicalDevices(inst->vkInstance(), &devCount, nullptr);
+ // ...
+ // build the first frame
+ render();
}
}
+ }
- bool event(QEvent *e) {
- if (e->type() == QEvent::UpdateRequest)
- render();
- return QWindow::event(e);
- }
+ bool event(QEvent *e) {
+ if (e->type() == QEvent::UpdateRequest)
+ render();
+ return QWindow::event(e);
+ }
- void render() {
- ...
- requestUpdate(); // render continuously
- }
+ void render() {
+ // ...
+ requestUpdate(); // render continuously
+ }
- private:
- bool m_initialized = false;
- };
+private:
+ bool m_initialized = false;
+};
- int main(int argc, char **argv)
- {
- QGuiApplication app(argc, argv);
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
- QVulkanInstance inst;
- if (!inst.create()) {
- qWarning("Vulkan not available");
- return 1;
- }
+ QVulkanInstance inst;
+ if (!inst.create()) {
+ qWarning("Vulkan not available");
+ return 1;
+ }
- VulkanWindow window;
- window.showMaximized();
+ VulkanWindow window;
+ window.showMaximized();
- return app.exec();
+ return app.exec();
- }
+}
//! [3]
+
+
+} // src_gui_vulkan_qvulkaninstance2
diff --git a/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanwindow.cpp b/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanwindow.cpp
index 81d51233a3..5b9e8b2201 100644
--- a/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanwindow.cpp
+++ b/src/gui/doc/snippets/code/src_gui_vulkan_qvulkanwindow.cpp
@@ -47,86 +47,106 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+#include <QGuiApplication>
+#include <QVulkanDeviceFunctions>
+#include <QVulkanWindow>
+namespace src_gui_vulkan_qvulkanwindow {
+VkCommandBuffer commandBuffer;
+const VkRenderPassBeginInfo *renderPassBegin = nullptr;
+VkSubpassContents contents;
//! [0]
- class VulkanRenderer : public QVulkanWindowRenderer
- {
- public:
- VulkanRenderer(QVulkanWindow *w) : m_window(w) { }
-
- void initResources() override
- {
- m_devFuncs = m_window->vulkanInstance()->deviceFunctions(m_window->device());
- ...
- }
- void initSwapChainResources() override { ... }
- void releaseSwapChainResources() override { ... }
- void releaseResources() override { ... }
-
- void startNextFrame() override
- {
- VkCommandBuffer cmdBuf = m_window->currentCommandBuffer();
- ...
- m_devFuncs->vkCmdBeginRenderPass(...);
- ...
- m_window->frameReady();
- }
-
- private:
- QVulkanWindow *m_window;
- QVulkanDeviceFunctions *m_devFuncs;
- };
-
- class VulkanWindow : public QVulkanWindow
- {
- public:
- QVulkanWindowRenderer *createRenderer() override {
- return new VulkanRenderer(this);
- }
- };
-
- int main(int argc, char *argv[])
- {
- QGuiApplication app(argc, argv);
-
- QVulkanInstance inst;
- // enable the standard validation layers, when available
- inst.setLayers(QByteArrayList() << "VK_LAYER_LUNARG_standard_validation");
- if (!inst.create())
- qFatal("Failed to create Vulkan instance: %d", inst.errorCode());
-
- VulkanWindow w;
- w.setVulkanInstance(&inst);
- w.showMaximized();
-
- return app.exec();
- }
+class VulkanRenderer : public QVulkanWindowRenderer
+{
+public:
+ VulkanRenderer(QVulkanWindow *w) : m_window(w) { }
+
+ void initResources() override
+ {
+ m_devFuncs = m_window->vulkanInstance()->deviceFunctions(m_window->device());
+ // ..
+ }
+ void initSwapChainResources() override { /* ... */ }
+ void releaseSwapChainResources() override { /* ... */ }
+ void releaseResources() override { /* ... */ }
+
+ void startNextFrame() override
+ {
+ VkCommandBuffer cmdBuf = m_window->currentCommandBuffer();
+ // ...
+ m_devFuncs->vkCmdBeginRenderPass(commandBuffer, renderPassBegin, contents);
+ // ...
+ m_window->frameReady();
+ }
+
+private:
+ QVulkanWindow *m_window;
+ QVulkanDeviceFunctions *m_devFuncs;
+};
+
+class VulkanWindow : public QVulkanWindow
+{
+public:
+ QVulkanWindowRenderer *createRenderer() override {
+ return new VulkanRenderer(this);
+ }
+};
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ QVulkanInstance inst;
+ // enable the standard validation layers, when available
+ inst.setLayers(QByteArrayList() << "VK_LAYER_LUNARG_standard_validation");
+ if (!inst.create())
+ qFatal("Failed to create Vulkan instance: %d", inst.errorCode());
+
+ VulkanWindow w;
+ w.setVulkanInstance(&inst);
+ w.showMaximized();
+
+ return app.exec();
+}
//! [0]
//! [1]
class Renderer {
- ...
+ void startNextFrame();
+ // ...
+
VkDescriptorBufferInfo m_uniformBufInfo[QVulkanWindow::MAX_CONCURRENT_FRAME_COUNT];
+ QVulkanWindow *m_window = nullptr;
};
void Renderer::startNextFrame()
{
VkDescriptorBufferInfo &uniformBufInfo(m_uniformBufInfo[m_window->currentFrame()]);
- ...
+ // ...
}
//! [1]
+} // src_gui_vulkan_qvulkanwindow
+
+
+namespace src_gui_vulkan_qvulkanwindow2 {
+
//! [2]
class Renderer {
- ...
+ void startNextFrame();
+ // ...
+
VkDescriptorBufferInfo m_uniformBufInfo[QVulkanWindow::MAX_CONCURRENT_FRAME_COUNT];
+ QVulkanWindow *m_window = nullptr;
};
void Renderer::startNextFrame()
{
const int count = m_window->concurrentFrameCount();
- for (int i = 0; i < count; ++i)
- m_uniformBufInfo[i] = ...
- ...
+ // for (int i = 0; i < count; ++i)
+ // m_uniformBufInfo[i] = ...
+ // ...
}
//! [2]
+
+} // src_gui_vulkan_qvulkanwindow2