Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qrhinull.cpp
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qrhinull_p.h"
5#include <qmath.h>
6#include <QPainter>
7
9
43 : offscreenCommandBuffer(this)
44{
46}
47
48bool QRhiNull::create(QRhi::Flags flags)
49{
51 return true;
52}
53
55{
56}
57
59{
60 return { 1 };
61}
62
67
69{
70 return new QNullBuffer(this, type, usage, size);
71}
72
74{
75 return 256;
76}
77
79{
80 return false;
81}
82
84{
85 return true;
86}
87
89{
90 return true;
91}
92
94{
95 return QMatrix4x4(); // identity
96}
97
99{
102 return true;
103}
104
106{
107 Q_UNUSED(feature);
108 return true;
109}
110
112{
113 switch (limit) {
115 return 1;
117 return 16384;
119 return 8;
121 return 1;
123 return 1;
125 return 0;
127 return 0;
129 return 0;
131 return 0;
133 return 0;
135 return 2048;
137 return 65536;
139 return 32;
141 return 32;
142 }
143
144 Q_UNREACHABLE_RETURN(0);
145}
146
151
153{
155 info.deviceName = QByteArrayLiteral("Null");
156 return info;
157}
158
160{
161 return {};
162}
163
165{
166 // not applicable
167 return false;
168}
169
171{
172 // nothing to do here
173}
174
176{
177 return false;
178}
179
184
189
191 int sampleCount, QRhiRenderBuffer::Flags flags,
192 QRhiTexture::Format backingFormatHint)
193{
194 return new QNullRenderBuffer(this, type, pixelSize, sampleCount, flags, backingFormatHint);
195}
196
198 const QSize &pixelSize, int depth, int arraySize,
199 int sampleCount, QRhiTexture::Flags flags)
200{
201 return new QNullTexture(this, format, pixelSize, depth, arraySize, sampleCount, flags);
202}
203
205 QRhiSampler::Filter mipmapMode,
207{
208 return new QNullSampler(this, magFilter, minFilter, mipmapMode, u, v, w);
209}
210
212 QRhiTextureRenderTarget::Flags flags)
213{
214 return new QNullTextureRenderTarget(this, desc, flags);
215}
216
221
226
231
237
239 int dynamicOffsetCount,
240 const QRhiCommandBuffer::DynamicOffset *dynamicOffsets)
241{
242 Q_UNUSED(cb);
243 Q_UNUSED(srb);
244 Q_UNUSED(dynamicOffsetCount);
245 Q_UNUSED(dynamicOffsets);
246}
247
249 int startBinding, int bindingCount, const QRhiCommandBuffer::VertexInput *bindings,
250 QRhiBuffer *indexBuf, quint32 indexOffset, QRhiCommandBuffer::IndexFormat indexFormat)
251{
252 Q_UNUSED(cb);
253 Q_UNUSED(startBinding);
254 Q_UNUSED(bindingCount);
255 Q_UNUSED(bindings);
256 Q_UNUSED(indexBuf);
257 Q_UNUSED(indexOffset);
258 Q_UNUSED(indexFormat);
259}
260
266
268{
269 Q_UNUSED(cb);
270 Q_UNUSED(scissor);
271}
272
278
280{
281 Q_UNUSED(cb);
282 Q_UNUSED(refValue);
283}
284
286 quint32 instanceCount, quint32 firstVertex, quint32 firstInstance)
287{
288 Q_UNUSED(cb);
289 Q_UNUSED(vertexCount);
291 Q_UNUSED(firstVertex);
292 Q_UNUSED(firstInstance);
293}
294
296 quint32 instanceCount, quint32 firstIndex, qint32 vertexOffset, quint32 firstInstance)
297{
298 Q_UNUSED(cb);
299 Q_UNUSED(indexCount);
301 Q_UNUSED(firstIndex);
302 Q_UNUSED(vertexOffset);
303 Q_UNUSED(firstInstance);
304}
305
311
316
318{
319 Q_UNUSED(cb);
320 Q_UNUSED(msg);
321}
322
328
330{
331 Q_UNUSED(cb);
332 Q_UNUSED(x);
333 Q_UNUSED(y);
334 Q_UNUSED(z);
335}
336
338{
339 Q_UNUSED(cb);
340 return nullptr;
341}
342
347
352
354{
355 Q_UNUSED(cb);
356 return 0;
357}
358
360{
362 currentSwapChain = swapChain;
364}
365
367{
369 QNullSwapChain *swapChainD = QRHI_RES(QNullSwapChain, swapChain);
370 swapChainD->frameCount += 1;
371 currentSwapChain = nullptr;
373}
374
381
387
392
394{
396 for (int layer = 0, maxLayer = u.subresDesc.size(); layer < maxLayer; ++layer) {
397 for (int level = 0; level < QRhi::MAX_MIP_LEVELS; ++level) {
398 for (const QRhiTextureSubresourceUploadDescription &subresDesc : std::as_const(u.subresDesc[layer][level])) {
399 if (!subresDesc.image().isNull()) {
400 const QImage src = subresDesc.image();
401 QPainter painter(&texD->image[layer][level]);
402 const QSize srcSize = subresDesc.sourceSize().isEmpty()
403 ? src.size() : subresDesc.sourceSize();
405 painter.drawImage(subresDesc.destinationTopLeft(), src,
406 QRect(subresDesc.sourceTopLeft(), srcSize));
407 } else if (!subresDesc.data().isEmpty()) {
408 const QSize subresSize = q->sizeForMipLevel(level, texD->pixelSize());
409 int w = subresSize.width();
410 int h = subresSize.height();
411 if (!subresDesc.sourceSize().isEmpty()) {
412 w = subresDesc.sourceSize().width();
413 h = subresDesc.sourceSize().height();
414 }
415 // sourceTopLeft is not supported on this path as per QRhi docs
416 const char *src = subresDesc.data().constData();
417 const int srcBpl = w * 4;
418 int srcStride = srcBpl;
419 if (subresDesc.dataStride())
420 srcStride = subresDesc.dataStride();
421 const QPoint dstOffset = subresDesc.destinationTopLeft();
422 uchar *dst = texD->image[layer][level].bits();
423 const int dstBpl = texD->image[layer][level].bytesPerLine();
424 for (int y = 0; y < h; ++y) {
425 memcpy(dst + dstOffset.x() * 4 + (y + dstOffset.y()) * dstBpl,
426 src + y * srcStride,
427 size_t(srcBpl));
428 }
429 }
430 }
431 }
432 }
433}
434
436{
439 const QImage &srcImage(srcD->image[u.desc.sourceLayer()][u.desc.sourceLevel()]);
440 QImage &dstImage(dstD->image[u.desc.destinationLayer()][u.desc.destinationLevel()]);
441 const QPoint dstPos = u.desc.destinationTopLeft();
442 const QSize size = u.desc.pixelSize().isEmpty() ? srcD->pixelSize() : u.desc.pixelSize();
443 const QPoint srcPos = u.desc.sourceTopLeft();
444
445 QPainter painter(&dstImage);
447 painter.drawImage(QRect(dstPos, size), srcImage, QRect(srcPos, size));
448}
449
451{
453 const QSize baseSize = texD->pixelSize();
454 const int levelCount = q->mipLevelsForSize(baseSize);
455 for (int level = 1; level < levelCount; ++level)
456 texD->image[0][level] = texD->image[0][0].scaled(q->sizeForMipLevel(level, baseSize));
457}
458
460{
461 Q_UNUSED(cb);
463 for (int opIdx = 0; opIdx < ud->activeBufferOpCount; ++opIdx) {
464 const QRhiResourceUpdateBatchPrivate::BufferOp &u(ud->bufferOps[opIdx]);
467 {
469 memcpy(bufD->data + u.offset, u.data.constData(), size_t(u.data.size()));
474 memcpy(result->data.data(), bufD->data + u.offset, size_t(u.readSize));
475 if (result->completed)
476 result->completed();
477 }
478 }
479 for (int opIdx = 0; opIdx < ud->activeTextureOpCount; ++opIdx) {
480 const QRhiResourceUpdateBatchPrivate::TextureOp &u(ud->textureOps[opIdx]);
482 if (u.dst->format() == QRhiTexture::RGBA8)
490 if (texD) {
491 result->format = texD->format();
492 result->pixelSize = q->sizeForMipLevel(u.rb.level(), texD->pixelSize());
493 } else {
495 result->format = QRhiTexture::RGBA8;
497 }
498 quint32 bytesPerLine = 0;
499 quint32 byteSize = 0;
500 textureFormatInfo(result->format, result->pixelSize, &bytesPerLine, &byteSize, nullptr);
501 if (texD && texD->format() == QRhiTexture::RGBA8) {
502 result->data.resize(int(byteSize));
503 const QImage &src(texD->image[u.rb.layer()][u.rb.level()]);
504 char *dst = result->data.data();
505 for (int y = 0, h = src.height(); y < h; ++y) {
506 memcpy(dst, src.constScanLine(y), bytesPerLine);
507 dst += bytesPerLine;
508 }
509 } else {
510 result->data.fill(0, int(byteSize));
511 }
512 if (result->completed)
513 result->completed();
515 if (u.dst->format() == QRhiTexture::RGBA8)
517 }
518 }
519 ud->free();
520}
521
524 const QColor &colorClearValue,
525 const QRhiDepthStencilClearValue &depthStencilClearValue,
526 QRhiResourceUpdateBatch *resourceUpdates,
527 QRhiCommandBuffer::BeginPassFlags flags)
528{
529 Q_UNUSED(colorClearValue);
530 Q_UNUSED(depthStencilClearValue);
532
533 if (resourceUpdates)
534 resourceUpdate(cb, resourceUpdates);
535
538 if (!QRhiRenderTargetAttachmentTracker::isUpToDate<QNullTexture, QNullRenderBuffer>(rtTex->description(), rtTex->d.currentResIdList))
539 rtTex->create();
540 }
541}
542
544{
545 if (resourceUpdates)
546 resourceUpdate(cb, resourceUpdates);
547}
548
550 QRhiResourceUpdateBatch *resourceUpdates,
551 QRhiCommandBuffer::BeginPassFlags flags)
552{
554 if (resourceUpdates)
555 resourceUpdate(cb, resourceUpdates);
556}
557
559{
560 if (resourceUpdates)
561 resourceUpdate(cb, resourceUpdates);
562}
563
568
573
575{
576 delete[] data;
577 data = nullptr;
578
580 if (rhiD)
581 rhiD->unregisterResource(this);
582}
583
585{
586 if (data)
587 destroy();
588
589 data = new char[m_size];
590 memset(data, 0, m_size);
591
593 rhiD->registerResource(this);
594
595 return true;
596}
597
603
605 int sampleCount, QRhiRenderBuffer::Flags flags,
606 QRhiTexture::Format backingFormatHint)
607 : QRhiRenderBuffer(rhi, type, pixelSize, sampleCount, flags, backingFormatHint)
608{
609}
610
615
617{
618 valid = false;
619
621 if (rhiD)
622 rhiD->unregisterResource(this);
623}
624
626{
627 if (valid)
628 destroy();
629
630 valid = true;
631 generation += 1;
632
634 rhiD->registerResource(this);
635
636 return true;
637}
638
643
645 int arraySize, int sampleCount, Flags flags)
646 : QRhiTexture(rhi, format, pixelSize, depth, arraySize, sampleCount, flags)
647{
648}
649
654
656{
657 valid = false;
658
660 if (rhiD)
661 rhiD->unregisterResource(this);
662}
663
665{
666 if (valid)
667 destroy();
668
669 valid = true;
670
672 const bool isCube = m_flags.testFlag(CubeMap);
673 const bool is3D = m_flags.testFlag(ThreeDimensional);
674 const bool isArray = m_flags.testFlag(TextureArray);
675 const bool hasMipMaps = m_flags.testFlag(MipMapped);
676 const bool is1D = m_flags.testFlags(OneDimensional);
677 QSize size = is1D ? QSize(qMax(1, m_pixelSize.width()), 1)
678 : (m_pixelSize.isEmpty() ? QSize(1, 1) : m_pixelSize);
679 const int mipLevelCount = hasMipMaps ? rhiD->q->mipLevelsForSize(size) : 1;
680 const int layerCount = is3D ? qMax(1, m_depth)
681 : (isCube ? 6
682 : (isArray ? qMax(0, m_arraySize)
683 : 1));
684
685 if (m_format == RGBA8) {
686 image.resize(layerCount);
687 for (int layer = 0; layer < layerCount; ++layer) {
688 for (int level = 0; level < mipLevelCount; ++level) {
689 image[layer][level] = QImage(rhiD->q->sizeForMipLevel(level, size),
691 image[layer][level].fill(Qt::yellow);
692 }
693 }
694 }
695
696 generation += 1;
697
698 rhiD->registerResource(this);
699
700 return true;
701}
702
704{
705 Q_UNUSED(src);
706 if (valid)
707 destroy();
708
709 valid = true;
710
711 generation += 1;
712
714 rhiD->registerResource(this);
715
716 return true;
717}
718
719QNullSampler::QNullSampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode,
721 : QRhiSampler(rhi, magFilter, minFilter, mipmapMode, u, v, w)
722{
723}
724
729
731{
733 if (rhiD)
734 rhiD->unregisterResource(this);
735}
736
738{
740 rhiD->registerResource(this);
741 return true;
742}
743
748
753
755{
757 if (rhiD)
758 rhiD->unregisterResource(this);
759}
760
762{
764 return true;
765}
766
774
776{
777 return {};
778}
779
785
790
794
799
801{
802 return d.dpr;
803}
804
806{
807 return 1;
808}
809
817
822
824{
826 if (rhiD)
827 rhiD->unregisterResource(this);
828}
829
837
839{
844 QRhiTexture *tex = colorAtt->texture();
845 QRhiRenderBuffer *rb = colorAtt->renderBuffer();
846 d.pixelSize = tex ? rhiD->q->sizeForMipLevel(colorAtt->level(), tex->pixelSize()) : rb->pixelSize();
847 } else if (m_desc.depthStencilBuffer()) {
849 } else if (m_desc.depthTexture()) {
851 }
852 QRhiRenderTargetAttachmentTracker::updateResIdList<QNullTexture, QNullRenderBuffer>(m_desc, &d.currentResIdList);
853 rhiD->registerResource(this);
854 return true;
855}
856
858{
859 if (!QRhiRenderTargetAttachmentTracker::isUpToDate<QNullTexture, QNullRenderBuffer>(m_desc, d.currentResIdList))
860 const_cast<QNullTextureRenderTarget *>(this)->create();
861
862 return d.pixelSize;
863}
864
866{
867 return d.dpr;
868}
869
871{
872 return 1;
873}
874
879
884
886{
888 if (rhiD)
889 rhiD->unregisterResource(this);
890}
891
893{
895 if (!rhiD->sanityCheckShaderResourceBindings(this))
896 return false;
897
898 rhiD->updateLayoutDesc(this);
899
900 rhiD->registerResource(this, false);
901 return true;
902}
903
908
913
918
920{
922 if (rhiD)
923 rhiD->unregisterResource(this);
924}
925
927{
929 if (!rhiD->sanityCheckGraphicsPipeline(this))
930 return false;
931
932 rhiD->registerResource(this);
933 return true;
934}
935
940
945
947{
949 if (rhiD)
950 rhiD->unregisterResource(this);
951}
952
954{
956 rhiD->registerResource(this);
957 return true;
958}
959
964
969
971{
972 // nothing to do here
973}
974
976 : QRhiSwapChain(rhi),
977 rt(rhi, this),
978 cb(rhi)
979{
980}
981
986
988{
990 if (rhiD)
991 rhiD->unregisterResource(this);
992}
993
998
1003
1005{
1006 return QSize(1280, 720);
1007}
1008
1010{
1011 return f == SDR;
1012}
1013
1015{
1018 rhiD->registerResource(rpD, false);
1019 return rpD;
1020}
1021
1023{
1024 const bool needsRegistration = !window || window != m_window;
1025 if (window && window != m_window)
1026 destroy();
1027
1028 window = m_window;
1030 rt.setRenderPassDescriptor(m_renderPassDesc); // for the public getter in QRhiRenderTarget
1033 frameCount = 0;
1034
1035 if (needsRegistration) {
1037 rhiD->registerResource(this);
1038 }
1039
1040 return true;
1041}
1042
\inmodule QtCore
Definition qbytearray.h:57
void resize(qsizetype size)
Sets the size of the byte array to size bytes.
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
\inmodule QtGui
Definition qimage.h:37
@ Format_RGBA8888_Premultiplied
Definition qimage.h:60
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
Definition qmatrix4x4.h:25
The QPainter class performs low-level painting on widgets and other paint devices.
Definition qpainter.h:46
void setCompositionMode(CompositionMode mode)
Sets the composition mode to the given mode.
void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect, Qt::ImageConversionFlags flags=Qt::AutoColor)
Draws the rectangular portion source of the given image into the target rectangle in the paint device...
@ CompositionMode_Source
Definition qpainter.h:101
\inmodule QtCore\reentrant
Definition qpoint.h:25
\inmodule QtCore\reentrant
Definition qrect.h:30
quint32 size() const
Definition qrhi_p.h:357
const char * constData() const
Definition qrhi_p.h:353
\inmodule QtGui
Definition qrhi.h:846
Type m_type
Definition qrhi.h:887
Type
Specifies storage type of buffer resource.
Definition qrhi.h:848
@ Dynamic
Definition qrhi.h:851
quint32 m_size
Definition qrhi.h:889
\inmodule QtGui
Definition qrhi.h:576
QRhiRenderBuffer * renderBuffer() const
Definition qrhi.h:585
QRhiTexture * texture() const
Definition qrhi.h:582
int level() const
Definition qrhi.h:591
\inmodule QtGui
Definition qrhi.h:1651
QPair< int, quint32 > DynamicOffset
Synonym for QPair<int, quint32>.
Definition qrhi.h:1676
QPair< QRhiBuffer *, quint32 > VertexInput
Synonym for QPair<QRhiBuffer *, quint32>.
Definition qrhi.h:1680
IndexFormat
Specifies the index data type.
Definition qrhi.h:1653
\inmodule QtGui
Definition qrhi.h:1622
\inmodule QtGui
Definition qrhi.h:44
\inmodule QtGui
Definition qrhi.h:1270
void textureFormatInfo(QRhiTexture::Format format, const QSize &size, quint32 *bpl, quint32 *byteSize, quint32 *bytesPerPixel) const
Definition qrhi.cpp:8185
void setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBindings *srb, int dynamicOffsetCount, const QRhiCommandBuffer::DynamicOffset *dynamicOffsets) override
Definition qrhinull.cpp:238
double lastCompletedGpuTime(QRhiCommandBuffer *cb) override
Definition qrhinull.cpp:353
QRhi::FrameOpResult endOffscreenFrame(QRhi::EndFrameFlags flags) override
Definition qrhinull.cpp:382
bool isFeatureSupported(QRhi::Feature feature) const override
Definition qrhinull.cpp:105
QRhiNull(QRhiNullInitParams *params)
Definition qrhinull.cpp:42
void debugMarkMsg(QRhiCommandBuffer *cb, const QByteArray &msg) override
Definition qrhinull.cpp:317
void dispatch(QRhiCommandBuffer *cb, int x, int y, int z) override
Definition qrhinull.cpp:329
QRhi::FrameOpResult beginFrame(QRhiSwapChain *swapChain, QRhi::BeginFrameFlags flags) override
Definition qrhinull.cpp:359
void resourceUpdate(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override
Definition qrhinull.cpp:459
void drawIndexed(QRhiCommandBuffer *cb, quint32 indexCount, quint32 instanceCount, quint32 firstIndex, qint32 vertexOffset, quint32 firstInstance) override
Definition qrhinull.cpp:295
void beginComputePass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates, QRhiCommandBuffer::BeginPassFlags flags) override
Definition qrhinull.cpp:549
void beginPass(QRhiCommandBuffer *cb, QRhiRenderTarget *rt, const QColor &colorClearValue, const QRhiDepthStencilClearValue &depthStencilClearValue, QRhiResourceUpdateBatch *resourceUpdates, QRhiCommandBuffer::BeginPassFlags flags) override
Definition qrhinull.cpp:522
bool isClipDepthZeroToOne() const override
Definition qrhinull.cpp:88
void endComputePass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override
Definition qrhinull.cpp:558
QNullCommandBuffer offscreenCommandBuffer
Definition qrhinull_p.h:290
void endPass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override
Definition qrhinull.cpp:543
QRhi::FrameOpResult endFrame(QRhiSwapChain *swapChain, QRhi::EndFrameFlags flags) override
Definition qrhinull.cpp:366
QRhi::FrameOpResult beginOffscreenFrame(QRhiCommandBuffer **cb, QRhi::BeginFrameFlags flags) override
Definition qrhinull.cpp:375
bool isYUpInNDC() const override
Definition qrhinull.cpp:83
QRhiDriverInfo driverInfo() const override
Definition qrhinull.cpp:152
void setScissor(QRhiCommandBuffer *cb, const QRhiScissor &scissor) override
Definition qrhinull.cpp:267
void simulateTextureUpload(const QRhiResourceUpdateBatchPrivate::TextureOp &u)
Definition qrhinull.cpp:393
QRhiComputePipeline * createComputePipeline() override
Definition qrhinull.cpp:222
void setPipelineCacheData(const QByteArray &data) override
Definition qrhinull.cpp:185
void setVertexInput(QRhiCommandBuffer *cb, int startBinding, int bindingCount, const QRhiCommandBuffer::VertexInput *bindings, QRhiBuffer *indexBuf, quint32 indexOffset, QRhiCommandBuffer::IndexFormat indexFormat) override
Definition qrhinull.cpp:248
void debugMarkBegin(QRhiCommandBuffer *cb, const QByteArray &name) override
Definition qrhinull.cpp:306
void draw(QRhiCommandBuffer *cb, quint32 vertexCount, quint32 instanceCount, quint32 firstVertex, quint32 firstInstance) override
Definition qrhinull.cpp:285
QByteArray pipelineCacheData() override
Definition qrhinull.cpp:180
void destroy() override
Definition qrhinull.cpp:54
const QRhiNativeHandles * nativeHandles() override
Definition qrhinull.cpp:147
void setGraphicsPipeline(QRhiCommandBuffer *cb, QRhiGraphicsPipeline *ps) override
Definition qrhinull.cpp:232
void releaseCachedResources() override
Definition qrhinull.cpp:170
void simulateTextureCopy(const QRhiResourceUpdateBatchPrivate::TextureOp &u)
Definition qrhinull.cpp:435
QRhiTexture * createTexture(QRhiTexture::Format format, const QSize &pixelSize, int depth, int arraySize, int sampleCount, QRhiTexture::Flags flags) override
Definition qrhinull.cpp:197
void simulateTextureGenMips(const QRhiResourceUpdateBatchPrivate::TextureOp &u)
Definition qrhinull.cpp:450
QRhiRenderBuffer * createRenderBuffer(QRhiRenderBuffer::Type type, const QSize &pixelSize, int sampleCount, QRhiRenderBuffer::Flags flags, QRhiTexture::Format backingFormatHint) override
Definition qrhinull.cpp:190
bool makeThreadLocalNativeContextCurrent() override
Definition qrhinull.cpp:164
QRhiNullNativeHandles nativeHandlesStruct
Definition qrhinull_p.h:288
bool isYUpInFramebuffer() const override
Definition qrhinull.cpp:78
QRhi::FrameOpResult finish() override
Definition qrhinull.cpp:388
void setComputePipeline(QRhiCommandBuffer *cb, QRhiComputePipeline *ps) override
Definition qrhinull.cpp:323
QRhiBuffer * createBuffer(QRhiBuffer::Type type, QRhiBuffer::UsageFlags usage, quint32 size) override
Definition qrhinull.cpp:68
QRhiStats statistics() override
Definition qrhinull.cpp:159
void beginExternal(QRhiCommandBuffer *cb) override
Definition qrhinull.cpp:343
QRhiSwapChain * createSwapChain() override
Definition qrhinull.cpp:63
void setViewport(QRhiCommandBuffer *cb, const QRhiViewport &viewport) override
Definition qrhinull.cpp:261
QRhiTextureRenderTarget * createTextureRenderTarget(const QRhiTextureRenderTargetDescription &desc, QRhiTextureRenderTarget::Flags flags) override
Definition qrhinull.cpp:211
QRhiGraphicsPipeline * createGraphicsPipeline() override
Definition qrhinull.cpp:217
bool create(QRhi::Flags flags) override
Definition qrhinull.cpp:48
void setStencilRef(QRhiCommandBuffer *cb, quint32 refValue) override
Definition qrhinull.cpp:279
void debugMarkEnd(QRhiCommandBuffer *cb) override
Definition qrhinull.cpp:312
QList< int > supportedSampleCounts() const override
Definition qrhinull.cpp:58
QMatrix4x4 clipSpaceCorrMatrix() const override
Definition qrhinull.cpp:93
QRhiSampler * createSampler(QRhiSampler::Filter magFilter, QRhiSampler::Filter minFilter, QRhiSampler::Filter mipmapMode, QRhiSampler::AddressMode u, QRhiSampler::AddressMode v, QRhiSampler::AddressMode w) override
Definition qrhinull.cpp:204
QRhiSwapChain * currentSwapChain
Definition qrhinull_p.h:289
int ubufAlignment() const override
Definition qrhinull.cpp:73
bool isTextureFormatSupported(QRhiTexture::Format format, QRhiTexture::Flags flags) const override
Definition qrhinull.cpp:98
int resourceLimit(QRhi::ResourceLimit limit) const override
Definition qrhinull.cpp:111
QRhiShaderResourceBindings * createShaderResourceBindings() override
Definition qrhinull.cpp:227
void setBlendConstants(QRhiCommandBuffer *cb, const QColor &c) override
Definition qrhinull.cpp:273
void endExternal(QRhiCommandBuffer *cb) override
Definition qrhinull.cpp:348
bool isDeviceLost() const override
Definition qrhinull.cpp:175
int layer() const
Definition qrhi.h:785
QRhiTexture * texture() const
Definition qrhi.h:782
int level() const
Definition qrhi.h:788
\inmodule QtGui
Definition qrhi.h:1094
QSize pixelSize() const
Definition qrhi.h:1115
Type
Specifies the type of the renderbuffer.
Definition qrhi.h:1096
\inmodule QtGui
Definition qrhi.h:1142
\inmodule QtGui
Definition qrhi.h:1158
void setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)
Sets the QRhiRenderPassDescriptor desc for use with this render target.
Definition qrhi.h:1165
QRhiRenderPassDescriptor * m_renderPassDesc
Definition qrhi.h:1169
static QRhiResourceUpdateBatchPrivate * get(QRhiResourceUpdateBatch *b)
Definition qrhi_p.h:536
\inmodule QtGui
Definition qrhi.h:1731
@ TextureRenderTarget
Definition qrhi.h:813
virtual Type resourceType() const =0
QRhiImplementation * m_rhi
Definition qrhi.h:840
\inmodule QtGui
Definition qrhi.h:1030
Filter
Specifies the minification, magnification, or mipmap filtering.
Definition qrhi.h:1032
AddressMode
Specifies the addressing mode.
Definition qrhi.h:1038
\inmodule QtGui
Definition qrhi.h:138
\inmodule QtGui
Definition qrhi.h:1214
\inmodule QtGui
Definition qrhi.h:1173
\inmodule QtGui
Definition qrhi.h:1549
QSize currentPixelSize() const
Definition qrhi.h:1596
QWindow * m_window
Definition qrhi.h:1609
QRhiRenderPassDescriptor * m_renderPassDesc
Definition qrhi.h:1614
QSize m_currentPixelSize
Definition qrhi.h:1615
Format
Describes the swapchain format.
Definition qrhi.h:1561
QPoint destinationTopLeft() const
Definition qrhi.h:761
QPoint sourceTopLeft() const
Definition qrhi.h:752
int destinationLevel() const
Definition qrhi.h:758
int sourceLevel() const
Definition qrhi.h:749
QSize pixelSize() const
Definition qrhi.h:743
int sourceLayer() const
Definition qrhi.h:746
int destinationLayer() const
Definition qrhi.h:755
const QRhiColorAttachment * cbeginColorAttachments() const
Definition qrhi.h:634
QRhiTexture * depthTexture() const
Definition qrhi.h:642
const QRhiColorAttachment * cendColorAttachments() const
Definition qrhi.h:635
QRhiRenderBuffer * depthStencilBuffer() const
Definition qrhi.h:639
\inmodule QtGui
Definition qrhi.h:1184
QRhiTextureRenderTargetDescription m_desc
Definition qrhi.h:1207
\inmodule QtGui
Definition qrhi.h:895
QSize m_pixelSize
Definition qrhi.h:1016
int m_arraySize
Definition qrhi.h:1018
int m_depth
Definition qrhi.h:1017
Format format() const
Definition qrhi.h:972
@ ThreeDimensional
Definition qrhi.h:907
@ MipMapped
Definition qrhi.h:900
@ OneDimensional
Definition qrhi.h:910
@ TextureArray
Definition qrhi.h:909
@ CubeMap
Definition qrhi.h:899
Format
Specifies the texture format.
Definition qrhi.h:914
@ UnknownFormat
Definition qrhi.h:915
QSize pixelSize() const
Definition qrhi.h:975
Format m_format
Definition qrhi.h:1015
Flags m_flags
Definition qrhi.h:1020
\inmodule QtGui
Definition qrhi.h:85
static constexpr int MAX_MIP_LEVELS
Definition qrhi.h:1997
ResourceLimit
Describes the resource limit to query.
Definition qrhi.h:1886
@ MaxThreadsPerThreadGroup
Definition qrhi.h:1893
@ MaxThreadGroupZ
Definition qrhi.h:1896
@ FramesInFlight
Definition qrhi.h:1890
@ TextureSizeMin
Definition qrhi.h:1887
@ MaxThreadGroupsPerDimension
Definition qrhi.h:1892
@ MaxAsyncReadbackFrames
Definition qrhi.h:1891
@ TextureArraySizeMax
Definition qrhi.h:1897
@ MaxColorAttachments
Definition qrhi.h:1889
@ MaxThreadGroupY
Definition qrhi.h:1895
@ MaxVertexInputs
Definition qrhi.h:1899
@ MaxThreadGroupX
Definition qrhi.h:1894
@ TextureSizeMax
Definition qrhi.h:1888
@ MaxVertexOutputs
Definition qrhi.h:1900
@ MaxUniformBufferRange
Definition qrhi.h:1898
Feature
Flag values to indicate what features are supported by the backend currently in use.
Definition qrhi.h:1831
FrameOpResult
Describes the result of operations that can have a soft failure.
Definition qrhi.h:1824
@ FrameOpSuccess
Definition qrhi.h:1825
\inmodule QtCore
Definition qsize.h:25
constexpr int width() const noexcept
Returns the width.
Definition qsize.h:130
QSize scaled(int w, int h, Qt::AspectRatioMode mode) const noexcept
Definition qsize.h:151
constexpr bool isEmpty() const noexcept
Returns true if either of the width and height is less than or equal to 0; otherwise returns false.
Definition qsize.h:124
constexpr size_type size() const noexcept
#define this
Definition dialogs.cpp:9
Combined button and popup list for selecting options.
@ yellow
Definition qnamespace.h:40
Definition image.cpp:4
#define QByteArrayLiteral(str)
Definition qbytearray.h:52
static int instanceCount
typedef QByteArray(EGLAPIENTRYP PFNQGSGETDISPLAYSPROC)()
EGLOutputLayerEXT layer
Flags
constexpr const T & qMax(const T &a, const T &b)
Definition qminmax.h:42
GLsizei const GLfloat * v
[13]
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat z
GLint GLint GLint GLint GLint x
[0]
GLint GLenum GLsizei GLsizei GLsizei depth
GLenum GLuint GLint level
GLfloat GLfloat GLfloat w
[0]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLfloat GLfloat f
GLenum src
GLenum type
GLenum GLenum dst
GLbitfield flags
GLuint name
GLint GLsizei GLsizei GLenum format
GLint y
GLfloat GLfloat GLfloat GLfloat h
void ** params
const GLubyte * c
GLint limit
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLuint64EXT * result
[6]
GLsizeiptr const void GLenum usage
Definition qopenglext.h:543
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
#define QRHI_RES_RHI(t)
Definition qrhi_p.h:29
#define QRHI_RES(t, x)
Definition qrhi_p.h:28
SSL_CTX int(* cb)(SSL *ssl, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
#define Q_UNUSED(x)
unsigned int quint32
Definition qtypes.h:50
unsigned char uchar
Definition qtypes.h:32
int qint32
Definition qtypes.h:49
QSharedPointer< T > other(t)
[5]
view viewport() -> scroll(dx, dy, deviceRect)
QPainter painter(this)
[7]
QHostInfo info
[0]
char * data
Definition qrhinull_p.h:30
QNullBuffer(QRhiImplementation *rhi, Type type, UsageFlags usage, quint32 size)
Definition qrhinull.cpp:564
bool create() override
Creates the corresponding native graphics resources.
Definition qrhinull.cpp:584
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:574
char * beginFullDynamicBufferUpdateForCurrentFrame() override
Definition qrhinull.cpp:598
QNullCommandBuffer(QRhiImplementation *rhi)
Definition qrhinull.cpp:960
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:970
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:946
bool create() override
Definition qrhinull.cpp:953
QNullComputePipeline(QRhiImplementation *rhi)
Definition qrhinull.cpp:936
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:919
bool create() override
Creates the corresponding native graphics resources.
Definition qrhinull.cpp:926
QNullGraphicsPipeline(QRhiImplementation *rhi)
Definition qrhinull.cpp:909
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:616
bool create() override
Creates the corresponding native graphics resources.
Definition qrhinull.cpp:625
QNullRenderBuffer(QRhiImplementation *rhi, Type type, const QSize &pixelSize, int sampleCount, QRhiRenderBuffer::Flags flags, QRhiTexture::Format backingFormatHint)
Definition qrhinull.cpp:604
QRhiTexture::Format backingFormat() const override
Definition qrhinull.cpp:639
QNullRenderPassDescriptor(QRhiImplementation *rhi)
Definition qrhinull.cpp:744
QRhiRenderPassDescriptor * newCompatibleRenderPassDescriptor() const override
Definition qrhinull.cpp:767
QVector< quint32 > serializedFormat() const override
Definition qrhinull.cpp:775
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:754
bool isCompatible(const QRhiRenderPassDescriptor *other) const override
Definition qrhinull.cpp:761
QRhiRenderTargetAttachmentTracker::ResIdList currentResIdList
Definition qrhinull_p.h:87
QNullRenderPassDescriptor * rp
Definition qrhinull_p.h:84
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:730
QNullSampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode, AddressMode u, AddressMode v, AddressMode w)
Definition qrhinull.cpp:719
bool create() override
Definition qrhinull.cpp:737
QNullShaderResourceBindings(QRhiImplementation *rhi)
Definition qrhinull.cpp:875
void updateResources(UpdateFlags flags) override
Definition qrhinull.cpp:904
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:885
QSize pixelSize() const override
Definition qrhinull.cpp:795
float devicePixelRatio() const override
Definition qrhinull.cpp:800
QNullRenderTargetData d
Definition qrhinull_p.h:100
QNullSwapChainRenderTarget(QRhiImplementation *rhi, QRhiSwapChain *swapchain)
Definition qrhinull.cpp:780
int sampleCount() const override
Definition qrhinull.cpp:805
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:791
bool createOrResize() override
Creates the swapchain if not already done and resizes the swapchain buffers to match the current size...
QWindow * window
Definition qrhinull_p.h:166
QSize surfacePixelSize() override
QNullSwapChainRenderTarget rt
Definition qrhinull_p.h:167
bool isFormatSupported(Format f) override
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:987
QRhiCommandBuffer * currentFrameCommandBuffer() override
Definition qrhinull.cpp:994
QRhiRenderPassDescriptor * newCompatibleRenderPassDescriptor() override
QRhiRenderTarget * currentFrameRenderTarget() override
Definition qrhinull.cpp:999
QNullSwapChain(QRhiImplementation *rhi)
Definition qrhinull.cpp:975
QNullCommandBuffer cb
Definition qrhinull_p.h:168
QSize pixelSize() const override
Definition qrhinull.cpp:857
int sampleCount() const override
Definition qrhinull.cpp:870
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:823
QRhiRenderPassDescriptor * newCompatibleRenderPassDescriptor() override
Definition qrhinull.cpp:830
bool create() override
Creates the corresponding native graphics resources.
Definition qrhinull.cpp:838
QNullTextureRenderTarget(QRhiImplementation *rhi, const QRhiTextureRenderTargetDescription &desc, Flags flags)
Definition qrhinull.cpp:810
QNullRenderTargetData d
Definition qrhinull_p.h:116
float devicePixelRatio() const override
Definition qrhinull.cpp:865
bool create() override
Creates the corresponding native graphics resources.
Definition qrhinull.cpp:664
bool createFrom(NativeTexture src) override
Similar to create(), except that no new native textures are created.
Definition qrhinull.cpp:703
QNullTexture(QRhiImplementation *rhi, Format format, const QSize &pixelSize, int depth, int arraySize, int sampleCount, Flags flags)
Definition qrhinull.cpp:644
uint generation
Definition qrhinull_p.h:58
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
Definition qrhinull.cpp:655
\inmodule QtGui
Definition qrhi.h:1759
\variable QRhiReadbackResult::completed
Definition qrhi.h:800
\inmodule QtGui
\inmodule QtGui
Definition qrhi.h:1723
QByteArray data
Definition qrhi.h:1727
QRhiTextureCopyDescription desc
Definition qrhi_p.h:471
QVarLengthArray< MipLevelUploadList, 6 > subresDesc
Definition qrhi_p.h:469
\inmodule QtGui
Definition qrhi.h:1782
\inmodule QtGui
Definition qrhi.h:965
Definition moc.h:23