Krita Source Code Documentation
Loading...
Searching...
No Matches
KisOpenGLBufferCreationGuard.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7
9
10#include "kis_opengl.h"
11
12
13KisOpenGLBufferCreationGuard::KisOpenGLBufferCreationGuard(QOpenGLBuffer *buffer, int size, QOpenGLBuffer::UsagePattern usagePattern)
14{
15 m_buffer = buffer;
16
17 m_buffer->create();
18 m_buffer->setUsagePattern(usagePattern);
19 m_buffer->bind();
20 m_buffer->allocate(size);
21
23 m_bufferPtr = reinterpret_cast<quint8*>(m_buffer->map(QOpenGLBuffer::WriteOnly));
24 m_bufferIsMapped = true;
25 }
26
27 if (!m_bufferPtr) {
28 m_bufferPtr = new quint8[size];
29 }
30}
31
33{
34 if (m_bufferIsMapped) {
35 m_buffer->unmap();
36 } else {
37 m_buffer->write(0, m_bufferPtr, m_buffer->size());
38 delete[] m_bufferPtr;
39 }
40 m_buffer->release();
41}
static bool supportsBufferMapping()
KisOpenGLBufferCreationGuard(QOpenGLBuffer *buffer, int size, QOpenGLBuffer::UsagePattern usagePattern)