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
qrhid3d11_p.h
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// Qt-Security score:significant reason:default
4
5#ifndef QRHID3D11_P_H
6#define QRHID3D11_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include "qrhi_p.h"
20#include <rhi/qshaderdescription.h>
21#include <QWindow>
22
23#include <d3d11_1.h>
24#include <dxgi1_6.h>
25#include <dcomp.h>
26
28
29class QRhiD3D11;
30
31struct QD3D11Buffer : public QRhiBuffer
32{
33 QD3D11Buffer(QRhiImplementation *rhi, Type type, UsageFlags usage, quint32 size);
34 ~QD3D11Buffer();
35 void destroy() override;
36 bool create() override;
40
42 ID3D11UnorderedAccessView *createClearUnorderedAccessView(quint32 offset, quint32 size);
43
44 ID3D11Buffer *buffer = nullptr;
45 char *dynBuf = nullptr;
48 uint generation = 0;
49 friend class QRhiD3D11;
50};
51
53{
54 QD3D11RenderBuffer(QRhiImplementation *rhi, Type type, const QSize &pixelSize,
55 int sampleCount, QRhiRenderBuffer::Flags flags,
56 QRhiTexture::Format backingFormatHint);
58 void destroy() override;
59 bool create() override;
60 QRhiTexture::Format backingFormat() const override;
61
62 ID3D11Texture2D *tex = nullptr;
67 uint generation = 0;
68 friend class QRhiD3D11;
69};
70
72{
73 QD3D11Texture(QRhiImplementation *rhi, Format format, const QSize &pixelSize, int depth,
74 int arraySize, int sampleCount, Flags flags);
76 void destroy() override;
77 bool create() override;
78 bool createFrom(NativeTexture src) override;
80
81 bool prepareCreate(QSize *adjustedSize = nullptr);
82 bool finishCreate();
85 {
86 if (tex)
87 return tex;
88 else if (tex1D)
89 return tex1D;
90 return tex3D;
91 }
92
93 ID3D11Texture2D *tex = nullptr;
96 bool owns = true;
99 uint mipLevelCount = 0;
102 uint generation = 0;
103 friend class QRhiD3D11;
104};
105
107{
108 QD3D11Sampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode,
109 AddressMode u, AddressMode v, AddressMode w);
110 ~QD3D11Sampler();
111 void destroy() override;
112 bool create() override;
113
115 uint generation = 0;
116 friend class QRhiD3D11;
117};
118
120{
121 QD3D11RenderPassDescriptor(QRhiImplementation *rhi);
123 void destroy() override;
124 bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
126 QVector<quint32> serializedFormat() const override;
127};
128
130{
131 static const int MAX_COLOR_ATTACHMENTS = 8;
132
133 struct Views
134 {
138
139 void setFrom(int colorAttCount, ID3D11RenderTargetView * const *rtv, ID3D11DepthStencilView *dsv)
140 {
141 this->colorAttCount = colorAttCount;
142 for (int i = 0; i < colorAttCount; ++i)
143 this->rtv[i] = rtv[i];
144 for (int i = colorAttCount; i < MAX_COLOR_ATTACHMENTS; ++i)
145 this->rtv[i] = nullptr;
146 this->dsv = dsv;
147 }
148
149 void reset()
150 {
151 colorAttCount = 0;
152 for (int i = 0; i < MAX_COLOR_ATTACHMENTS; ++i)
153 rtv[i] = nullptr;
154 dsv = nullptr;
155 }
156 };
157
158 QD3D11RenderTargetData(QRhiImplementation *)
159 {
160 views.reset();
161 }
162
165 float dpr = 1;
166 int sampleCount = 1;
169};
170
172{
175 QD3D11RenderTargetUavUpdateState() { rtViews.reset(); uav.fill(nullptr); }
176 bool update(const QD3D11RenderTargetData::Views &currentRtViews, ID3D11UnorderedAccessView * const *uavs = nullptr, int count = 0);
177};
178
180{
181 QD3D11SwapChainRenderTarget(QRhiImplementation *rhi, QRhiSwapChain *swapchain);
183 void destroy() override;
184
185 QSize pixelSize() const override;
186 float devicePixelRatio() const override;
187 int sampleCount() const override;
188
190};
191
193{
194 QD3D11TextureRenderTarget(QRhiImplementation *rhi, const QRhiTextureRenderTargetDescription &desc, Flags flags);
196 void destroy() override;
197
198 QSize pixelSize() const override;
199 float devicePixelRatio() const override;
200 int sampleCount() const override;
201
203 bool create() override;
204
208 bool ownsDsv = false;
210 friend class QRhiD3D11;
211};
212
215
217{
218 QD3D11ShaderResourceBindings(QRhiImplementation *rhi);
220 void destroy() override;
221 bool create() override;
222 void updateResources(UpdateFlags flags) override;
223
224 bool hasDynamicOffset = false;
226 uint generation = 0;
229
230 // Keep track of the generation number of each referenced QRhi* to be able
231 // to detect that the batched bindings are out of date.
260
262 bool present = false;
267 void finish() {
268 present = ubufs.finish();
269 ubuforigbindings.finish();
270 ubufoffsets.finish();
271 ubufsizes.finish();
272 }
273 void clear() {
274 ubufs.clear();
275 ubuforigbindings.clear();
276 ubufoffsets.clear();
277 ubufsizes.clear();
278 }
279 };
280
282 bool present = false;
285 void finish() {
286 present = samplers.finish();
287 shaderresources.finish();
288 }
289 void clear() {
290 samplers.clear();
291 shaderresources.clear();
292 }
293 };
294
296 bool present = false;
298 void finish() {
299 present = uavs.finish();
300 }
301 void clear() {
302 uavs.clear();
303 }
304 };
305
313
320
323
324 void clear() {
325 vsUniformBufferBatches.clear();
326 hsUniformBufferBatches.clear();
327 dsUniformBufferBatches.clear();
328 gsUniformBufferBatches.clear();
329 fsUniformBufferBatches.clear();
330 csUniformBufferBatches.clear();
331
332 vsSamplerBatches.clear();
333 hsSamplerBatches.clear();
334 dsSamplerBatches.clear();
335 gsSamplerBatches.clear();
336 fsSamplerBatches.clear();
337 csSamplerBatches.clear();
338
339 csUavBatches.clear();
340 fsUavBatches.clear();
341 }
342 } resourceBatches;
343
344 friend class QRhiD3D11;
345};
346
347
349{
350 QD3D11GraphicsPipeline(QRhiImplementation *rhi);
352 void destroy() override;
353 bool create() override;
354
357 struct {
360 } vs;
361 struct {
363 QShader::NativeResourceBindingMap nativeResourceBindingMap;
364 } hs;
365 struct {
367 QShader::NativeResourceBindingMap nativeResourceBindingMap;
368 } ds;
369 struct {
371 QShader::NativeResourceBindingMap nativeResourceBindingMap;
372 } gs;
373 struct {
375 QShader::NativeResourceBindingMap nativeResourceBindingMap;
376 } fs;
377 struct {
378 int reg = -1;
380 uint stages = 0;
381 } pushConstants;
385 uint generation = 0;
386 friend class QRhiD3D11;
387};
388
390{
391 QD3D11ComputePipeline(QRhiImplementation *rhi);
393 void destroy() override;
394 bool create() override;
395
396 struct {
399 } cs;
400 struct {
401 int reg = -1;
403 } pushConstants;
404 uint generation = 0;
405 friend class QRhiD3D11;
406};
407
408struct QD3D11SwapChain;
409
411{
412 QD3D11CommandBuffer(QRhiImplementation *rhi);
414 void destroy() override;
415
416 // these must be kept at a reasonably low value otherwise sizeof Command explodes
417 static const int MAX_DYNAMIC_OFFSET_COUNT = 8;
419
420 struct Command {
452 enum ClearFlag { Color = 1, Depth = 2, Stencil = 4 };
454
455 // QRhi*/QD3D11* references should be kept at minimum, and avoided, if
456 // possible. So no QRhiTexture/Buffer/etc. pointers (or pointers to the
457 // internal d). Store D3D resource refs instead so there is no
458 // dependency on the QRhi* resource objects themselves anymore in the
459 // command list.
460 union Args {
461 struct {
466 } beginFrame;
467 struct {
468 ID3D11Query *tsQuery;
469 ID3D11Query *tsDisjointQuery;
470 } endFrame;
471 struct {
473 } setRenderTarget;
474 struct {
476 int mask;
477 float c[4];
478 float d;
480 } clear;
481 struct {
482 float x, y, w, h;
483 float d0, d1;
484 } viewport;
485 struct {
486 int x, y, w, h;
487 } scissor;
488 struct {
494 } bindVertexBuffers;
495 struct {
499 } bindIndexBuffer;
500 struct {
511 } bindGraphicsPipeline;
512 struct {
516 uint dynamicOffsetPairs[MAX_DYNAMIC_OFFSET_COUNT * 2]; // binding, offsetInConstants
517 } bindShaderResources;
518 struct {
519 ID3D11Buffer *buffer;
520 quint32 dataOffset; // into pushConstantPool
523 uint stages; // mask of RBM_* stage indices
524 } setPushConstants;
525 struct {
526 ID3D11DepthStencilState *dsState;
528 } stencilRef;
529 struct {
530 ID3D11BlendState *blendState;
531 float c[4];
532 } blendConstants;
533 struct {
538 } draw;
539 struct {
541 quint32 instanceCount;
544 quint32 firstInstance;
545 } drawIndexed;
546 struct {
551 } drawIndirect;
552 struct {
553 ID3D11Buffer *indirectBuffer;
554 quint32 indirectBufferOffset;
555 quint32 drawCount;
556 quint32 stride;
557 } drawIndexedIndirect;
558 struct {
563 const void *src; // must come from retain*()
565 } updateSubRes;
566 struct {
567 ID3D11Resource *dst;
568 UINT dstSubRes;
576 } copySubRes;
577 struct {
580 } clearUav;
581 struct {
582 ID3D11Resource *dst;
583 UINT dstSubRes;
584 ID3D11Resource *src;
585 UINT srcSubRes;
586 DXGI_FORMAT format;
587 } resolveSubRes;
588 struct {
590 } genMip;
591 struct {
592 char s[64];
593 } debugMark;
594 struct {
596 } bindComputePipeline;
597 struct {
601 } dispatch;
602 struct {
603 ID3D11Buffer *indirectBuffer;
604 quint32 indirectBufferOffset;
605 } dispatchIndirect;
606 } args;
607 };
608
614
617 double lastGpuTime = 0;
632
639
640 // relies heavily on implicit sharing (no copies of the actual data will be made)
641 const uchar *retainData(const QByteArray &data) {
642 dataRetainPool.append(data);
643 return reinterpret_cast<const uchar *>(dataRetainPool.last().constData());
644 }
646 bufferDataRetainPool.append(data);
647 return reinterpret_cast<const uchar *>(bufferDataRetainPool.last().constData());
648 }
649 const uchar *retainImage(const QImage &image) {
650 imageRetainPool.append(image);
651 return imageRetainPool.last().constBits();
652 }
653 // except this one
655 resourceBatchRetainPool.append(resourceBatches);
656 return resourceBatchRetainPool.count() - 1;
657 }
659 for (ID3D11UnorderedAccessView *uav : std::as_const(ownedUavs))
660 uav->Release();
661 ownedUavs.clear();
662 }
664 commands.reset();
665 pushConstantPool.clear();
666 dataRetainPool.clear();
667 bufferDataRetainPool.clear();
668 imageRetainPool.clear();
669 resourceBatchRetainPool.clear();
671 }
672 void resetState() {
674 // do not zero lastGpuTime
675 currentTarget = nullptr;
676 currentRenderTargetViews.reset();
679 }
681 currentGraphicsPipeline = nullptr;
682 currentComputePipeline = nullptr;
684 currentGraphicsSrb = nullptr;
685 currentComputeSrb = nullptr;
687 currentIndexBuffer = nullptr;
688 currentIndexOffset = 0;
689 currentIndexFormat = DXGI_FORMAT_R16_UINT;
690 pushConstantData.clear();
691 memset(currentVertexBuffers, 0, sizeof(currentVertexBuffers));
692 memset(currentVertexOffsets, 0, sizeof(currentVertexOffsets));
693 }
694};
695
697{
698 static const int TIMESTAMP_PAIRS = 2;
699
703
704 bool prepare(QRhiD3D11 *rhiD);
705 void destroy();
706 bool tryQueryTimestamps(int idx, ID3D11DeviceContext *context, double *elapsedSec);
707};
708
710{
711 QD3D11SwapChain(QRhiImplementation *rhi);
713 void destroy() override;
714
715 QRhiCommandBuffer *currentFrameCommandBuffer() override;
717 QRhiRenderTarget *currentFrameRenderTarget(StereoTargetBuffer targetBuffer) override;
718
719 QSize surfacePixelSize() override;
720 bool isFormatSupported(Format f) override;
722
725
726 void releaseBuffers();
727 bool newColorBuffer(const QSize &size, DXGI_FORMAT format, DXGI_SAMPLE_DESC sampleDesc,
728 ID3D11Texture2D **tex, ID3D11RenderTargetView **rtv) const;
729
730 QWindow *window = nullptr;
742 static const int BUFFER_COUNT = 2;
747 int frameCount = 0;
756};
757
759{
760public:
761 QRhiDriverInfo info() const override;
762
765};
766
768{
769public:
770 QRhiD3D11(QRhiD3D11InitParams *params, QRhiD3D11NativeHandles *importDevice = nullptr);
771
772 bool create(QRhi::Flags flags) override;
773 void destroy() override;
774 QRhi::AdapterList enumerateAdaptersBeforeCreate(QRhiNativeHandles *nativeHandles) const override;
775
779 QRhiBuffer *createBuffer(QRhiBuffer::Type type,
780 QRhiBuffer::UsageFlags usage,
781 quint32 size) override;
782 QRhiRenderBuffer *createRenderBuffer(QRhiRenderBuffer::Type type,
783 const QSize &pixelSize,
784 int sampleCount,
785 QRhiRenderBuffer::Flags flags,
786 QRhiTexture::Format backingFormatHint) override;
787 QRhiTexture *createTexture(QRhiTexture::Format format,
788 const QSize &pixelSize,
789 int depth,
790 int arraySize,
791 int sampleCount,
792 QRhiTexture::Flags flags) override;
793 QRhiSampler *createSampler(QRhiSampler::Filter magFilter,
794 QRhiSampler::Filter minFilter,
795 QRhiSampler::Filter mipmapMode,
796 QRhiSampler:: AddressMode u,
797 QRhiSampler::AddressMode v,
798 QRhiSampler::AddressMode w) override;
799
800 QRhiTextureRenderTarget *createTextureRenderTarget(const QRhiTextureRenderTargetDescription &desc,
801 QRhiTextureRenderTarget::Flags flags) override;
802
803 QRhiShadingRateMap *createShadingRateMap() override;
804
805 QRhiSwapChain *createSwapChain() override;
806 QRhi::FrameOpResult beginFrame(QRhiSwapChain *swapChain, QRhi::BeginFrameFlags flags) override;
807 QRhi::FrameOpResult endFrame(QRhiSwapChain *swapChain, QRhi::EndFrameFlags flags) override;
808 QRhi::FrameOpResult beginOffscreenFrame(QRhiCommandBuffer **cb, QRhi::BeginFrameFlags flags) override;
809 QRhi::FrameOpResult endOffscreenFrame(QRhi::EndFrameFlags flags) override;
810 QRhi::FrameOpResult finish() override;
811
812 void resourceUpdate(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override;
813
814 void beginPass(QRhiCommandBuffer *cb,
815 QRhiRenderTarget *rt,
816 const QColor &colorClearValue,
817 const QRhiDepthStencilClearValue &depthStencilClearValue,
818 QRhiResourceUpdateBatch *resourceUpdates,
819 QRhiCommandBuffer::BeginPassFlags flags) override;
820 void endPass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override;
821
822 void setGraphicsPipeline(QRhiCommandBuffer *cb,
823 QRhiGraphicsPipeline *ps) override;
824
825 void setShaderResources(QRhiCommandBuffer *cb,
826 QRhiShaderResourceBindings *srb,
827 int dynamicOffsetCount,
828 const QRhiCommandBuffer::DynamicOffset *dynamicOffsets) override;
829
830 void setVertexInput(QRhiCommandBuffer *cb,
831 int startBinding, int bindingCount, const QRhiCommandBuffer::VertexInput *bindings,
832 QRhiBuffer *indexBuf, quint32 indexOffset,
833 QRhiCommandBuffer::IndexFormat indexFormat) override;
834
835 void setViewport(QRhiCommandBuffer *cb, const QRhiViewport &viewport) override;
836 void setScissor(QRhiCommandBuffer *cb, const QRhiScissor &scissor) override;
837 void setBlendConstants(QRhiCommandBuffer *cb, const QColor &c) override;
838 void setStencilRef(QRhiCommandBuffer *cb, quint32 refValue) override;
839 void setPushConstants(QRhiCommandBuffer *cb, quint32 offset, quint32 size, const void *data) override;
841 void setShadingRate(QRhiCommandBuffer *cb, const QSize &coarsePixelSize) override;
842
843 void draw(QRhiCommandBuffer *cb, quint32 vertexCount,
844 quint32 instanceCount, quint32 firstVertex, quint32 firstInstance) override;
845
846 void drawIndexed(QRhiCommandBuffer *cb, quint32 indexCount,
847 quint32 instanceCount, quint32 firstIndex,
848 qint32 vertexOffset, quint32 firstInstance) override;
849
850 void drawIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer,
851 quint32 indirectBufferOffset, quint32 drawCount, quint32 stride) override;
852
853 void drawIndexedIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer,
854 quint32 indirectBufferOffset, quint32 drawCount, quint32 stride) override;
855
856 void debugMarkBegin(QRhiCommandBuffer *cb, const QByteArray &name) override;
857 void debugMarkEnd(QRhiCommandBuffer *cb) override;
858 void debugMarkMsg(QRhiCommandBuffer *cb, const QByteArray &msg) override;
859
860 void beginComputePass(QRhiCommandBuffer *cb,
861 QRhiResourceUpdateBatch *resourceUpdates,
862 QRhiCommandBuffer::BeginPassFlags flags) override;
863 void endComputePass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override;
864 void setComputePipeline(QRhiCommandBuffer *cb, QRhiComputePipeline *ps) override;
865 void dispatch(QRhiCommandBuffer *cb, int x, int y, int z) override;
866 void dispatchIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer,
867 quint32 indirectBufferOffset) override;
868
869 void drawIndirectCount(QRhiCommandBuffer *cb,
870 QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset,
871 QRhiBuffer *countBuffer, quint32 countBufferOffset,
872 quint32 maxDrawCount, quint32 stride) override;
873 void drawIndexedIndirectCount(QRhiCommandBuffer *cb,
874 QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset,
875 QRhiBuffer *countBuffer, quint32 countBufferOffset,
876 quint32 maxDrawCount, quint32 stride) override;
877
878 const QRhiNativeHandles *nativeHandles(QRhiCommandBuffer *cb) override;
879 void beginExternal(QRhiCommandBuffer *cb) override;
880 void endExternal(QRhiCommandBuffer *cb) override;
881 double lastCompletedGpuTime(QRhiCommandBuffer *cb) override;
882
883 QList<int> supportedSampleCounts() const override;
884 QList<QSize> supportedShadingRates(int sampleCount) const override;
885 int ubufAlignment() const override;
886 bool isYUpInFramebuffer() const override;
887 bool isYUpInNDC() const override;
888 bool isClipDepthZeroToOne() const override;
889 QMatrix4x4 clipSpaceCorrMatrix() const override;
890 bool isTextureFormatSupported(QRhiTexture::Format format, QRhiTexture::Flags flags) const override;
891 bool isFeatureSupported(QRhi::Feature feature) const override;
892 int resourceLimit(QRhi::ResourceLimit limit) const override;
893 const QRhiNativeHandles *nativeHandles() override;
894 QRhiDriverInfo driverInfo() const override;
895 QRhiStats statistics() override;
897 void setQueueSubmitParams(QRhiNativeHandles *params) override;
899 bool isDeviceLost() const override;
900
901 QByteArray pipelineCacheData() override;
902 void setPipelineCacheData(const QByteArray &data) override;
903
905 int layer, int level, const QRhiTextureSubresourceUploadDescription &subresDesc);
906 void enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates);
908 const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[],
909 uint pushConstantStages);
911
913 const QD3D11ShaderResourceBindings::ResourceBatches &allResourceBatches,
914 const uint *dynOfsPairs, int dynOfsPairCount,
915 bool offsetOnlyChange,
919 DXGI_SAMPLE_DESC effectiveSampleDesc(int sampleCount) const;
921 void reportLiveObjects(ID3D11Device *device);
922 void clearShaderCache();
923 QByteArray compileHlslShaderSource(const QShader &shader, QShader::Variant shaderVariant, uint flags,
924 QString *error, QShaderKey *usedShaderKey);
926
928 bool debugLayer = false;
929 UINT maxFrameLatency = 2; // 1-3, use 2 to keep CPU-GPU parallelism while reducing lag compared to tripple buffering
931 ID3D11Device *dev = nullptr;
941 bool deviceLost = false;
944
945 struct {
957 } contextState;
958
959 static constexpr quint32 MAX_PUSH_CONSTANTS_SIZE = 128;
961
969
986
1000
1001 // This is what gets exposed as the "pipeline cache", not that that concept
1002 // applies anyway. Here we are just storing the DX bytecode for a shader so
1003 // we can skip the HLSL->DXBC compilation when the QShader has HLSL source
1004 // code and the same shader source has already been compiled before.
1005 // m_shaderCache seemingly does the same, but this here does not care about
1006 // the ID3D11*Shader, this is just about the bytecode and about allowing
1007 // the data to be serialized to persistent storage and then reloaded in
1008 // future runs of the app, or when creating another QRhi, etc.
1016};
1017
1020
1021inline bool operator==(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
1022{
1023 return a.sourceHash == b.sourceHash
1024 && a.target == b.target
1025 && a.entryPoint == b.entryPoint
1027}
1028
1029inline bool operator!=(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
1030{
1031 return !(a == b);
1032}
1033
1034inline size_t qHash(const QRhiD3D11::BytecodeCacheKey &k, size_t seed = 0) noexcept
1035{
1036 return qHashMulti(seed, k.sourceHash, k.target, k.entryPoint, k.compileFlags);
1037}
1038
1039QT_END_NAMESPACE
1040
1041#endif
QRhiDriverInfo info() const override
QRhiDriverInfo adapterInfo
const char * constData() const
Definition qrhi_p.h:477
void updateShaderResourceBindings(QD3D11ShaderResourceBindings *srbD, const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[], uint pushConstantStages)
int gsHighestActiveSrvBinding
void setScissor(QRhiCommandBuffer *cb, const QRhiScissor &scissor) override
bool deviceLost
void debugMarkMsg(QRhiCommandBuffer *cb, const QByteArray &msg) override
static constexpr quint32 MAX_PUSH_CONSTANTS_SIZE
int dsHighestActiveSrvBinding
QRhiD3D11NativeHandles nativeHandlesStruct
bool isYUpInNDC() const override
void drawIndexedIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset, quint32 drawCount, quint32 stride) override
ID3D11Device * dev
QRhiSwapChain * createSwapChain() override
void enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates)
bool isFeatureSupported(QRhi::Feature feature) const override
QRhi::FrameOpResult endOffscreenFrame(QRhi::EndFrameFlags flags) override
bool isDeviceLost() const override
bool vsHasIndexBufferBound
void executeBufferHostWrites(QD3D11Buffer *bufD)
QRhiStats statistics() override
QList< QSize > supportedShadingRates(int sampleCount) const override
QRhiComputePipeline * createComputePipeline() override
void debugMarkBegin(QRhiCommandBuffer *cb, const QByteArray &name) override
bool debugLayer
QRhi::FrameOpResult finish() override
void setVertexInput(QRhiCommandBuffer *cb, int startBinding, int bindingCount, const QRhiCommandBuffer::VertexInput *bindings, QRhiBuffer *indexBuf, quint32 indexOffset, QRhiCommandBuffer::IndexFormat indexFormat) override
void dispatchIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset) override
IDXGIAdapter1 * activeAdapter
QRhiGraphicsPipeline * createGraphicsPipeline() override
void drawIndirectCount(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset, QRhiBuffer *countBuffer, quint32 countBufferOffset, quint32 maxDrawCount, quint32 stride) override
QRhiShaderResourceBindings * createShaderResourceBindings() override
QVarLengthArray< BufferReadback, 2 > activeBufferReadbacks
QRhi::FrameOpResult beginFrame(QRhiSwapChain *swapChain, QRhi::BeginFrameFlags flags) override
ID3D11DeviceContext1 * context
QList< int > supportedSampleCounts() const override
QRhiTextureRenderTarget * createTextureRenderTarget(const QRhiTextureRenderTargetDescription &desc, QRhiTextureRenderTarget::Flags flags) override
QRhi::Flags rhiFlags
QByteArray compileHlslShaderSource(const QShader &shader, QShader::Variant shaderVariant, uint flags, QString *error, QShaderKey *usedShaderKey)
void setBlendConstants(QRhiCommandBuffer *cb, const QColor &c) override
int csHighestActiveSrvBinding
bool isClipDepthZeroToOne() const override
IDCompositionDevice * dcompDevice
QRhiDriverInfo driverInfoStruct
QHash< QRhiShaderStage, Shader > m_shaderCache
void resetShaderResources(QD3D11CommandBuffer *cbD, QD3D11RenderTargetUavUpdateState *rtUavState)
bool ensureDirectCompositionDevice()
const QRhiNativeHandles * nativeHandles(QRhiCommandBuffer *cb) override
void beginComputePass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates, QRhiCommandBuffer::BeginPassFlags flags) override
void draw(QRhiCommandBuffer *cb, quint32 vertexCount, quint32 instanceCount, quint32 firstVertex, quint32 firstInstance) override
void enqueueSubresUpload(QD3D11Texture *texD, QD3D11CommandBuffer *cbD, int layer, int level, const QRhiTextureSubresourceUploadDescription &subresDesc)
QD3D11SwapChain * currentSwapChain
void reportLiveObjects(ID3D11Device *device)
void resourceUpdate(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override
void destroy() override
QMatrix4x4 clipSpaceCorrMatrix() const override
void setPushConstants(QRhiCommandBuffer *cb, quint32 offset, quint32 size, const void *data) override
bool isYUpInFramebuffer() const override
int resourceLimit(QRhi::ResourceLimit limit) const override
void beginExternal(QRhiCommandBuffer *cb) override
QRhiTexture * createTexture(QRhiTexture::Format format, const QSize &pixelSize, int depth, int arraySize, int sampleCount, QRhiTexture::Flags flags) override
ID3D11Buffer * pushConstantBuffer
void setPipelineCacheData(const QByteArray &data) override
LUID adapterLuid
void executeCommandBuffer(QD3D11CommandBuffer *cbD)
void debugMarkEnd(QRhiCommandBuffer *cb) override
void releaseCachedResources() override
double lastCompletedGpuTime(QRhiCommandBuffer *cb) override
ID3DUserDefinedAnnotation * annotations
bool importedDeviceAndContext
QRhi::FrameOpResult beginOffscreenFrame(QRhiCommandBuffer **cb, QRhi::BeginFrameFlags flags) override
QRhiBuffer * createBuffer(QRhiBuffer::Type type, QRhiBuffer::UsageFlags usage, quint32 size) override
bool supportsAllowTearing
void dispatch(QRhiCommandBuffer *cb, int x, int y, int z) override
void endExternal(QRhiCommandBuffer *cb) override
void setViewport(QRhiCommandBuffer *cb, const QRhiViewport &viewport) override
QVarLengthArray< TextureReadback, 2 > activeTextureReadbacks
QRhi::AdapterList enumerateAdaptersBeforeCreate(QRhiNativeHandles *nativeHandles) const override
bool ensurePushConstantBuffer()
void drawIndexedIndirectCount(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset, QRhiBuffer *countBuffer, quint32 countBufferOffset, quint32 maxDrawCount, quint32 stride) override
UINT maxFrameLatency
void setComputePipeline(QRhiCommandBuffer *cb, QRhiComputePipeline *ps) override
QRhi::FrameOpResult endFrame(QRhiSwapChain *swapChain, QRhi::EndFrameFlags flags) override
QRhiShadingRateMap * createShadingRateMap() override
bool isTextureFormatSupported(QRhiTexture::Format format, QRhiTexture::Flags flags) const override
void setShaderResources(QRhiCommandBuffer *cb, QRhiShaderResourceBindings *srb, int dynamicOffsetCount, const QRhiCommandBuffer::DynamicOffset *dynamicOffsets) override
void clearShaderCache()
D3D_FEATURE_LEVEL featureLevel
bool useLegacySwapchainModel
void endComputePass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override
bool makeThreadLocalNativeContextCurrent() override
bool create(QRhi::Flags flags) override
int csHighestActiveUavBinding
void finishActiveReadbacks()
IDXGIFactory1 * dxgiFactory
int fsHighestActiveSrvBinding
void setShadingRate(QRhiCommandBuffer *cb, const QSize &coarsePixelSize) override
QByteArray pipelineCacheData() override
const QRhiNativeHandles * nativeHandles() override
QRhiDriverInfo driverInfo() const override
void endPass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override
int ubufAlignment() const override
void beginPass(QRhiCommandBuffer *cb, QRhiRenderTarget *rt, const QColor &colorClearValue, const QRhiDepthStencilClearValue &depthStencilClearValue, QRhiResourceUpdateBatch *resourceUpdates, QRhiCommandBuffer::BeginPassFlags flags) override
void bindShaderResources(QD3D11CommandBuffer *cbD, const QD3D11ShaderResourceBindings::ResourceBatches &allResourceBatches, const uint *dynOfsPairs, int dynOfsPairCount, bool offsetOnlyChange, QD3D11RenderTargetUavUpdateState *rtUavState)
void drawIndexed(QRhiCommandBuffer *cb, quint32 indexCount, quint32 instanceCount, quint32 firstIndex, qint32 vertexOffset, quint32 firstInstance) override
void setQueueSubmitParams(QRhiNativeHandles *params) override
QRhiSampler * createSampler(QRhiSampler::Filter magFilter, QRhiSampler::Filter minFilter, QRhiSampler::Filter mipmapMode, QRhiSampler::AddressMode u, QRhiSampler::AddressMode v, QRhiSampler::AddressMode w) override
int vsHighestActiveSrvBinding
QRhiRenderBuffer * createRenderBuffer(QRhiRenderBuffer::Type type, const QSize &pixelSize, int sampleCount, QRhiRenderBuffer::Flags flags, QRhiTexture::Format backingFormatHint) override
int hsHighestActiveSrvBinding
void setGraphicsPipeline(QRhiCommandBuffer *cb, QRhiGraphicsPipeline *ps) override
QRhiD3D11(QRhiD3D11InitParams *params, QRhiD3D11NativeHandles *importDevice=nullptr)
DXGI_SAMPLE_DESC effectiveSampleDesc(int sampleCount) const
int fsHighestActiveUavBinding
void setStencilRef(QRhiCommandBuffer *cb, quint32 refValue) override
int vsHighestActiveVertexBufferBinding
void drawIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset, quint32 drawCount, quint32 stride) override
QRhiBinaryCache< BytecodeCacheKey, QByteArray > m_bytecodeCache
static QRhiResourceUpdateBatchPrivate * get(QRhiResourceUpdateBatch *b)
Definition qrhi_p.h:745
void fillDriverInfo(QRhiDriverInfo *info, const DXGI_ADAPTER_DESC1 &desc)
Combined button and popup list for selecting options.
@ UnBounded
Definition qrhi_p.h:390
@ Bounded
Definition qrhi_p.h:391
#define QRHI_RES_RHI(t)
Definition qrhi_p.h:33
#define QRHI_RES(t, x)
Definition qrhi_p.h:32
static const DXGI_FORMAT DEFAULT_SRGB_FORMAT
static void applyDynamicOffsets(UINT *offsets, int batchIndex, const QRhiBatchedBindings< UINT > *originalBindings, const QRhiBatchedBindings< UINT > *staticOffsets, const uint *dynOfsPairs, int dynOfsPairCount)
static D3D11_TEXTURE_ADDRESS_MODE toD3DAddressMode(QRhiSampler::AddressMode m)
#define SETUAVBATCH(stagePrefixL, stagePrefixU)
static QByteArray sourceHash(const QByteArray &source)
#define SETSAMPLERBATCH(stagePrefixL, stagePrefixU)
static const int RBM_HULL
static uint toD3DBufferUsage(QRhiBuffer::UsageFlags usage)
static const int RBM_FRAGMENT
#define SETUBUFBATCH(stagePrefixL, stagePrefixU)
Int aligned(Int v, Int byteAlign)
\variable QRhiVulkanQueueSubmitParams::waitSemaphoreCount
static DXGI_FORMAT toD3DDepthTextureDSVFormat(QRhiTexture::Format format)
static D3D11_BLEND toD3DBlendFactor(QRhiGraphicsPipeline::BlendFactor f, bool rgb)
static const int RBM_VERTEX
static D3D11_BLEND_OP toD3DBlendOp(QRhiGraphicsPipeline::BlendOp op)
#define D3D11_1_UAV_SLOT_COUNT
static const int RBM_DOMAIN
static D3D11_FILTER toD3DFilter(QRhiSampler::Filter minFilter, QRhiSampler::Filter magFilter, QRhiSampler::Filter mipFilter)
static std::pair< int, int > mapBinding(int binding, int stageIndex, const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[], uint pushConstantStages)
static QD3D11RenderTargetData * rtData(QRhiRenderTarget *rt)
static UINT8 toD3DColorWriteMask(QRhiGraphicsPipeline::ColorMask c)
static D3D11_STENCIL_OP toD3DStencilOp(QRhiGraphicsPipeline::StencilOp op)
void releasePipelineShader(T &s)
static D3D11_COMPARISON_FUNC toD3DTextureComparisonFunc(QRhiSampler::CompareOp op)
static int rbmStageIndex(QRhiShaderStage::Type type)
static DXGI_FORMAT toD3DAttributeFormat(QRhiVertexInputAttribute::Format format)
static void getPushConstantInfo(const QShader &shader, const QShaderKey &key, int *reg, quint32 *size)
static const int RBM_GEOMETRY
static D3D11_PRIMITIVE_TOPOLOGY toD3DTopology(QRhiGraphicsPipeline::Topology t, int patchControlPointCount)
static IDXGIFactory1 * createDXGIFactory2()
static D3D11_FILL_MODE toD3DFillMode(QRhiGraphicsPipeline::PolygonMode mode)
static bool isDepthTextureFormat(QRhiTexture::Format format)
static const int RBM_COMPUTE
static D3D11_CULL_MODE toD3DCullMode(QRhiGraphicsPipeline::CullMode c)
#define SETSHADER(StageL, StageU)
static DXGI_FORMAT toD3DTextureFormat(QRhiTexture::Format format, QRhiTexture::Flags flags)
static const DXGI_FORMAT DEFAULT_FORMAT
static uint clampedResourceCount(uint startSlot, int countSlots, uint maxSlots, const char *resType)
#define D3D11_VS_INPUT_REGISTER_COUNT
#define DXGI_ADAPTER_FLAG_SOFTWARE
\variable QRhiD3D11NativeHandles::dev
static QRhiTexture::Format swapchainReadbackTextureFormat(DXGI_FORMAT format, QRhiTexture::Flags *flags)
static D3D11_COMPARISON_FUNC toD3DCompareOp(QRhiGraphicsPipeline::CompareOp op)
static DXGI_FORMAT toD3DDepthTextureSRVFormat(QRhiTexture::Format format)
static const int RBM_SUPPORTED_STAGES
size_t qHash(const QRhiD3D11::BytecodeCacheKey &k, size_t seed=0) noexcept
Q_DECLARE_TYPEINFO(QRhiD3D11::TextureReadback, Q_RELOCATABLE_TYPE)
bool operator!=(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
Q_DECLARE_TYPEINFO(QRhiD3D11::BufferReadback, Q_RELOCATABLE_TYPE)
bool operator==(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
bool hasPendingDynamicUpdates
Definition qrhid3d11_p.h:46
void endFullDynamicBufferUpdateForCurrentFrame() override
To be called when the entire contents of the buffer data has been updated in the memory block returne...
char * dynBuf
Definition qrhid3d11_p.h:45
ID3D11Buffer * buffer
Definition qrhid3d11_p.h:44
QD3D11Buffer(QRhiImplementation *rhi, Type type, UsageFlags usage, quint32 size)
char * beginFullDynamicBufferUpdateForCurrentFrame() override
bool create() override
Creates the corresponding native graphics resources.
ID3D11UnorderedAccessView * createClearUnorderedAccessView(quint32 offset, quint32 size)
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
QHash< quint32, ID3D11UnorderedAccessView * > uavs
Definition qrhid3d11_p.h:47
QRhiBuffer::NativeBuffer nativeBuffer() override
ID3D11UnorderedAccessView * unorderedAccessView(quint32 offset)
QRhiRenderTarget * currentTarget
QVarLengthArray< char, 1024 > pushConstantPool
QVarLengthArray< char, 128 > pushConstantData
static const int MAX_DYNAMIC_OFFSET_COUNT
QVarLengthArray< QRhiBufferData, 4 > bufferDataRetainPool
const uchar * retainBufferData(const QRhiBufferData &data)
ID3D11Buffer * currentVertexBuffers[D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
QVarLengthArray< QImage, 4 > imageRetainPool
static const int MAX_VERTEX_BUFFER_BINDING_COUNT
int retainResourceBatches(const QD3D11ShaderResourceBindings::ResourceBatches &resourceBatches)
QRhiShaderResourceBindings * currentGraphicsSrb
QVarLengthArray< ID3D11UnorderedAccessView *, 4 > ownedUavs
const uchar * retainImage(const QImage &image)
QD3D11CommandBuffer(QRhiImplementation *rhi)
QD3D11RenderTargetData::Views currentRenderTargetViews
const uchar * retainData(const QByteArray &data)
QRhiShaderResourceBindings * currentComputeSrb
QRhiBackendCommandList< Command > commands
QVarLengthArray< QD3D11ShaderResourceBindings::ResourceBatches, 4 > resourceBatchRetainPool
QVarLengthArray< QByteArray, 4 > dataRetainPool
QRhiComputePipeline * currentComputePipeline
ID3D11Buffer * currentIndexBuffer
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
DXGI_FORMAT currentIndexFormat
quint32 currentVertexOffsets[D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]
QRhiGraphicsPipeline * currentGraphicsPipeline
ID3D11ComputeShader * shader
QD3D11ComputePipeline(QRhiImplementation *rhi)
bool create() override
QShader::NativeResourceBindingMap nativeResourceBindingMap
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
ID3D11DomainShader * shader
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
QD3D11GraphicsPipeline(QRhiImplementation *rhi)
ID3D11VertexShader * shader
ID3D11PixelShader * shader
ID3D11InputLayout * inputLayout
ID3D11BlendState * blendState
ID3D11RasterizerState * rastState
ID3D11GeometryShader * shader
D3D11_PRIMITIVE_TOPOLOGY d3dTopology
bool create() override
Creates the corresponding native graphics resources.
ID3D11DepthStencilState * dsState
QShader::NativeResourceBindingMap nativeResourceBindingMap
ID3D11HullShader * shader
QD3D11RenderBuffer(QRhiImplementation *rhi, Type type, const QSize &pixelSize, int sampleCount, QRhiRenderBuffer::Flags flags, QRhiTexture::Format backingFormatHint)
ID3D11RenderTargetView * rtv
Definition qrhid3d11_p.h:64
DXGI_FORMAT dxgiFormat
Definition qrhid3d11_p.h:65
ID3D11DepthStencilView * dsv
Definition qrhid3d11_p.h:63
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
DXGI_SAMPLE_DESC sampleDesc
Definition qrhid3d11_p.h:66
bool create() override
Creates the corresponding native graphics resources.
QRhiTexture::Format backingFormat() const override
ID3D11Texture2D * tex
Definition qrhid3d11_p.h:62
QD3D11RenderPassDescriptor(QRhiImplementation *rhi)
QRhiRenderPassDescriptor * newCompatibleRenderPassDescriptor() const override
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
bool isCompatible(const QRhiRenderPassDescriptor *other) const override
QVector< quint32 > serializedFormat() const override
ID3D11RenderTargetView * rtv[MAX_COLOR_ATTACHMENTS]
ID3D11DepthStencilView * dsv
void setFrom(int colorAttCount, ID3D11RenderTargetView *const *rtv, ID3D11DepthStencilView *dsv)
static const int MAX_COLOR_ATTACHMENTS
QD3D11RenderTargetData(QRhiImplementation *)
QD3D11RenderPassDescriptor * rp
QRhiRenderTargetAttachmentTracker::ResIdList currentResIdList
std::array< ID3D11UnorderedAccessView *, QD3D11RenderTargetData::MAX_COLOR_ATTACHMENTS > uav
bool update(const QD3D11RenderTargetData::Views &currentRtViews, ID3D11UnorderedAccessView *const *uavs=nullptr, int count=0)
QD3D11RenderTargetData::Views rtViews
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
QD3D11Sampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode, AddressMode u, AddressMode v, AddressMode w)
ID3D11SamplerState * samplerState
bool create() override
StageUniformBufferBatches dsUniformBufferBatches
StageUniformBufferBatches hsUniformBufferBatches
StageUniformBufferBatches csUniformBufferBatches
StageUniformBufferBatches gsUniformBufferBatches
StageUniformBufferBatches vsUniformBufferBatches
StageUniformBufferBatches fsUniformBufferBatches
QRhiBatchedBindings< ID3D11SamplerState * > samplers
QRhiBatchedBindings< ID3D11ShaderResourceView * > shaderresources
QRhiBatchedBindings< ID3D11UnorderedAccessView * > uavs
QRhiBatchedBindings< ID3D11Buffer * > ubufs
QD3D11GraphicsPipeline * lastUsedGraphicsPipeline
bool create() override
Creates the corresponding resource binding set.
QVarLengthArray< BoundResourceData, 8 > boundResourceData
QVarLengthArray< QRhiShaderResourceBinding, 8 > sortedBindings
void updateResources(UpdateFlags flags) override
QD3D11ComputePipeline * lastUsedComputePipeline
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
QD3D11ShaderResourceBindings(QRhiImplementation *rhi)
int sampleCount() const override
QD3D11SwapChainRenderTarget(QRhiImplementation *rhi, QRhiSwapChain *swapchain)
float devicePixelRatio() const override
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
QD3D11RenderTargetData d
QSize pixelSize() const override
bool prepare(QRhiD3D11 *rhiD)
bool tryQueryTimestamps(int idx, ID3D11DeviceContext *context, double *elapsedSec)
bool active[TIMESTAMP_PAIRS]
ID3D11Query * query[TIMESTAMP_PAIRS *2]
ID3D11Query * disjointQuery[TIMESTAMP_PAIRS]
static const int TIMESTAMP_PAIRS
QRhiSwapChainHdrInfo hdrInfo() override
\variable QRhiSwapChainHdrInfo::limitsType
HANDLE frameLatencyWaitableObject
QD3D11SwapChainTimestamps timestamps
QD3D11CommandBuffer cb
ID3D11RenderTargetView * backBufferRtv
int lastFrameLatencyWaitSlot
QWindow * window
QD3D11RenderBuffer * ds
QRhiRenderTarget * currentFrameRenderTarget() override
QD3D11SwapChainRenderTarget rtRight
ID3D11RenderTargetView * backBufferRtvRight
ID3D11Texture2D * msaaTex[BUFFER_COUNT]
DXGI_FORMAT colorFormat
QD3D11SwapChain(QRhiImplementation *rhi)
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
IDCompositionTarget * dcompTarget
QRhiRenderTarget * currentFrameRenderTarget(StereoTargetBuffer targetBuffer) override
ID3D11RenderTargetView * msaaRtv[BUFFER_COUNT]
bool createOrResize() override
Creates the swapchain if not already done and resizes the swapchain buffers to match the current size...
QSize surfacePixelSize() override
bool newColorBuffer(const QSize &size, DXGI_FORMAT format, DXGI_SAMPLE_DESC sampleDesc, ID3D11Texture2D **tex, ID3D11RenderTargetView **rtv) const
static const int BUFFER_COUNT
QD3D11SwapChainRenderTarget rt
bool isFormatSupported(Format f) override
DXGI_SAMPLE_DESC sampleDesc
IDCompositionVisual * dcompVisual
QRhiCommandBuffer * currentFrameCommandBuffer() override
int currentTimestampPairIndex
QRhiRenderPassDescriptor * newCompatibleRenderPassDescriptor() override
IDXGISwapChain * swapChain
DXGI_FORMAT srgbAdjustedColorFormat
ID3D11Texture2D * backBufferTex
QSize pixelSize() const override
QD3D11TextureRenderTarget(QRhiImplementation *rhi, const QRhiTextureRenderTargetDescription &desc, Flags flags)
ID3D11DepthStencilView * dsv
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
float devicePixelRatio() const override
QRhiRenderPassDescriptor * newCompatibleRenderPassDescriptor() override
int sampleCount() const override
bool ownsRtv[QD3D11RenderTargetData::MAX_COLOR_ATTACHMENTS]
ID3D11RenderTargetView * rtv[QD3D11RenderTargetData::MAX_COLOR_ATTACHMENTS]
bool create() override
Creates the corresponding native graphics resources.
QD3D11RenderTargetData d
ID3D11Texture1D * tex1D
Definition qrhid3d11_p.h:95
bool create() override
Creates the corresponding native graphics resources.
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
bool createFrom(NativeTexture src) override
Similar to create(), except that no new native textures are created.
NativeTexture nativeTexture() override
ID3D11UnorderedAccessView * perLevelViews[QRhi::MAX_MIP_LEVELS]
ID3D11Texture2D * tex
Definition qrhid3d11_p.h:93
bool prepareCreate(QSize *adjustedSize=nullptr)
DXGI_FORMAT dxgiFormat
Definition qrhid3d11_p.h:98
QD3D11Texture(QRhiImplementation *rhi, Format format, const QSize &pixelSize, int depth, int arraySize, int sampleCount, Flags flags)
ID3D11UnorderedAccessView * unorderedAccessViewForLevel(int level)
DXGI_SAMPLE_DESC sampleDesc
bool finishCreate()
ID3D11ShaderResourceView * srv
Definition qrhid3d11_p.h:97
ID3D11Texture3D * tex3D
Definition qrhid3d11_p.h:94
ID3D11Resource * textureResource() const
Definition qrhid3d11_p.h:84
ID3D11Buffer * stagingBuf
QRhiReadbackResult * result
OffscreenFrame(QRhiImplementation *rhi)
ID3D11Query * tsDisjointQuery
ID3D11Query * tsQueries[2]
QD3D11CommandBuffer cbWrapper
quint32 pushConstantSize
QByteArray bytecode
Shader(IUnknown *s, const QByteArray &bytecode, const QShader::NativeResourceBindingMap &rbm, int pushConstantRegister=-1, quint32 pushConstantSize=0)
QRhiReadbackResult * result
QRhiTexture::Format format
QRhiReadbackDescription desc
ID3D11Texture2D * stagingTex
\inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h
Definition qrhi.h:1988
\inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h
Definition qrhi.h:1588
ID3D11Buffer * buffers[MAX_VERTEX_BUFFER_BINDING_COUNT]
QD3D11RenderTargetData::Views rtViews
ID3D11DepthStencilView * swapchainDsv
ID3D11UnorderedAccessView * uav
ID3D11ShaderResourceView * srv
D3D11_PRIMITIVE_TOPOLOGY topology
UINT offsets[MAX_VERTEX_BUFFER_BINDING_COUNT]
uint dynamicOffsetPairs[MAX_DYNAMIC_OFFSET_COUNT *2]
ID3D11RasterizerState * rastState
UINT strides[MAX_VERTEX_BUFFER_BINDING_COUNT]
ID3D11DepthStencilState * dsState
ID3D11RenderTargetView * swapchainRtv