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
43 ID3D11Buffer *buffer = nullptr;
44 char *dynBuf = nullptr;
48 friend class QRhiD3D11;
49};
50
52{
53 QD3D11RenderBuffer(QRhiImplementation *rhi, Type type, const QSize &pixelSize,
54 int sampleCount, QRhiRenderBuffer::Flags flags,
55 QRhiTexture::Format backingFormatHint);
57 void destroy() override;
58 bool create() override;
59 QRhiTexture::Format backingFormat() const override;
60
61 ID3D11Texture2D *tex = nullptr;
67 friend class QRhiD3D11;
68};
69
71{
72 QD3D11Texture(QRhiImplementation *rhi, Format format, const QSize &pixelSize, int depth,
73 int arraySize, int sampleCount, Flags flags);
75 void destroy() override;
76 bool create() override;
77 bool createFrom(NativeTexture src) override;
79
80 bool prepareCreate(QSize *adjustedSize = nullptr);
81 bool finishCreate();
84 {
85 if (tex)
86 return tex;
87 else if (tex1D)
88 return tex1D;
89 return tex3D;
90 }
91
92 ID3D11Texture2D *tex = nullptr;
95 bool owns = true;
102 friend class QRhiD3D11;
103};
104
106{
107 QD3D11Sampler(QRhiImplementation *rhi, Filter magFilter, Filter minFilter, Filter mipmapMode,
108 AddressMode u, AddressMode v, AddressMode w);
109 ~QD3D11Sampler();
110 void destroy() override;
111 bool create() override;
112
115 friend class QRhiD3D11;
116};
117
119{
120 QD3D11RenderPassDescriptor(QRhiImplementation *rhi);
122 void destroy() override;
123 bool isCompatible(const QRhiRenderPassDescriptor *other) const override;
125 QVector<quint32> serializedFormat() const override;
126};
127
129{
130 static const int MAX_COLOR_ATTACHMENTS = 8;
131
132 struct Views
133 {
137
138 void setFrom(int colorAttCount, ID3D11RenderTargetView * const *rtv, ID3D11DepthStencilView *dsv)
139 {
140 this->colorAttCount = colorAttCount;
141 for (int i = 0; i < colorAttCount; ++i)
142 this->rtv[i] = rtv[i];
143 for (int i = colorAttCount; i < MAX_COLOR_ATTACHMENTS; ++i)
144 this->rtv[i] = nullptr;
145 this->dsv = dsv;
146 }
147
148 void reset()
149 {
150 colorAttCount = 0;
151 for (int i = 0; i < MAX_COLOR_ATTACHMENTS; ++i)
152 rtv[i] = nullptr;
153 dsv = nullptr;
154 }
155 };
156
157 QD3D11RenderTargetData(QRhiImplementation *)
158 {
159 views.reset();
160 }
161
164 float dpr = 1;
165 int sampleCount = 1;
168};
169
171{
174 QD3D11RenderTargetUavUpdateState() { rtViews.reset(); uav.fill(nullptr); }
175 bool update(const QD3D11RenderTargetData::Views &currentRtViews, ID3D11UnorderedAccessView * const *uavs = nullptr, int count = 0);
176};
177
179{
180 QD3D11SwapChainRenderTarget(QRhiImplementation *rhi, QRhiSwapChain *swapchain);
182 void destroy() override;
183
184 QSize pixelSize() const override;
185 float devicePixelRatio() const override;
186 int sampleCount() const override;
187
189};
190
192{
193 QD3D11TextureRenderTarget(QRhiImplementation *rhi, const QRhiTextureRenderTargetDescription &desc, Flags flags);
195 void destroy() override;
196
197 QSize pixelSize() const override;
198 float devicePixelRatio() const override;
199 int sampleCount() const override;
200
202 bool create() override;
203
207 bool ownsDsv = false;
209 friend class QRhiD3D11;
210};
211
214
216{
217 QD3D11ShaderResourceBindings(QRhiImplementation *rhi);
219 void destroy() override;
220 bool create() override;
221 void updateResources(UpdateFlags flags) override;
222
223 bool hasDynamicOffset = false;
228
229 // Keep track of the generation number of each referenced QRhi* to be able
230 // to detect that the batched bindings are out of date.
236 int count;
237 struct {
242 } d[QRhiShaderResourceBinding::Data::MAX_TEX_SAMPLER_ARRAY_SIZE];
243 };
261
263 bool present = false;
268 void finish() {
269 present = ubufs.finish();
270 ubuforigbindings.finish();
271 ubufoffsets.finish();
272 ubufsizes.finish();
273 }
274 void clear() {
275 ubufs.clear();
276 ubuforigbindings.clear();
277 ubufoffsets.clear();
278 ubufsizes.clear();
279 }
280 };
281
283 bool present = false;
286 void finish() {
287 present = samplers.finish();
288 shaderresources.finish();
289 }
290 void clear() {
291 samplers.clear();
292 shaderresources.clear();
293 }
294 };
295
297 bool present = false;
299 void finish() {
300 present = uavs.finish();
301 }
302 void clear() {
303 uavs.clear();
304 }
305 };
306
314
321
324
325 void clear() {
326 vsUniformBufferBatches.clear();
327 hsUniformBufferBatches.clear();
328 dsUniformBufferBatches.clear();
329 gsUniformBufferBatches.clear();
330 fsUniformBufferBatches.clear();
331 csUniformBufferBatches.clear();
332
333 vsSamplerBatches.clear();
334 hsSamplerBatches.clear();
335 dsSamplerBatches.clear();
336 gsSamplerBatches.clear();
337 fsSamplerBatches.clear();
338 csSamplerBatches.clear();
339
340 csUavBatches.clear();
341 fsUavBatches.clear();
342 }
343 } resourceBatches;
344
345 friend class QRhiD3D11;
346};
347
349
351{
352 QD3D11GraphicsPipeline(QRhiImplementation *rhi);
354 void destroy() override;
355 bool create() override;
356
359 struct {
362 } vs;
363 struct {
365 QShader::NativeResourceBindingMap nativeResourceBindingMap;
366 } hs;
367 struct {
369 QShader::NativeResourceBindingMap nativeResourceBindingMap;
370 } ds;
371 struct {
373 QShader::NativeResourceBindingMap nativeResourceBindingMap;
374 } gs;
375 struct {
377 QShader::NativeResourceBindingMap nativeResourceBindingMap;
378 } fs;
383 friend class QRhiD3D11;
384};
385
387{
388 QD3D11ComputePipeline(QRhiImplementation *rhi);
390 void destroy() override;
391 bool create() override;
392
393 struct {
396 } cs;
398 friend class QRhiD3D11;
399};
400
401struct QD3D11SwapChain;
402
404{
405 QD3D11CommandBuffer(QRhiImplementation *rhi);
407 void destroy() override;
408
409 // these must be kept at a reasonably low value otherwise sizeof Command explodes
410 static const int MAX_DYNAMIC_OFFSET_COUNT = 8;
412
413 struct Command {
443 enum ClearFlag { Color = 1, Depth = 2, Stencil = 4 };
445
446 // QRhi*/QD3D11* references should be kept at minimum, and avoided, if
447 // possible. So no QRhiTexture/Buffer/etc. pointers (or pointers to the
448 // internal d). Store D3D resource refs instead so there is no
449 // dependency on the QRhi* resource objects themselves anymore in the
450 // command list.
451 union Args {
452 struct {
457 } beginFrame;
458 struct {
459 ID3D11Query *tsQuery;
460 ID3D11Query *tsDisjointQuery;
461 } endFrame;
462 struct {
464 } setRenderTarget;
465 struct {
467 int mask;
468 float c[4];
469 float d;
471 } clear;
472 struct {
473 float x, y, w, h;
474 float d0, d1;
475 } viewport;
476 struct {
477 int x, y, w, h;
478 } scissor;
479 struct {
485 } bindVertexBuffers;
486 struct {
490 } bindIndexBuffer;
491 struct {
502 } bindGraphicsPipeline;
503 struct {
507 uint dynamicOffsetPairs[MAX_DYNAMIC_OFFSET_COUNT * 2]; // binding, offsetInConstants
508 } bindShaderResources;
509 struct {
510 ID3D11DepthStencilState *dsState;
512 } stencilRef;
513 struct {
514 ID3D11BlendState *blendState;
515 float c[4];
516 } blendConstants;
517 struct {
522 } draw;
523 struct {
525 quint32 instanceCount;
528 quint32 firstInstance;
529 } drawIndexed;
530 struct {
535 } drawIndirect;
536 struct {
537 ID3D11Buffer *indirectBuffer;
538 quint32 indirectBufferOffset;
539 quint32 drawCount;
540 quint32 stride;
541 } drawIndexedIndirect;
542 struct {
547 const void *src; // must come from retain*()
549 } updateSubRes;
550 struct {
551 ID3D11Resource *dst;
552 UINT dstSubRes;
560 } copySubRes;
561 struct {
562 ID3D11Resource *dst;
563 UINT dstSubRes;
564 ID3D11Resource *src;
565 UINT srcSubRes;
566 DXGI_FORMAT format;
567 } resolveSubRes;
568 struct {
570 } genMip;
571 struct {
572 char s[64];
573 } debugMark;
574 struct {
576 } bindComputePipeline;
577 struct {
581 } dispatch;
582 struct {
583 ID3D11Buffer *indirectBuffer;
584 quint32 indirectBufferOffset;
585 } dispatchIndirect;
586 } args;
587 };
588
594
597 double lastGpuTime = 0;
611
616
617 // relies heavily on implicit sharing (no copies of the actual data will be made)
618 const uchar *retainData(const QByteArray &data) {
619 dataRetainPool.append(data);
620 return reinterpret_cast<const uchar *>(dataRetainPool.last().constData());
621 }
623 bufferDataRetainPool.append(data);
624 return reinterpret_cast<const uchar *>(bufferDataRetainPool.last().constData());
625 }
626 const uchar *retainImage(const QImage &image) {
627 imageRetainPool.append(image);
628 return imageRetainPool.last().constBits();
629 }
630 // except this one
632 resourceBatchRetainPool.append(resourceBatches);
633 return resourceBatchRetainPool.count() - 1;
634 }
636 commands.reset();
637 dataRetainPool.clear();
638 bufferDataRetainPool.clear();
639 imageRetainPool.clear();
640 resourceBatchRetainPool.clear();
641 }
642 void resetState() {
644 // do not zero lastGpuTime
645 currentTarget = nullptr;
646 currentRenderTargetViews.reset();
649 }
651 currentGraphicsPipeline = nullptr;
652 currentComputePipeline = nullptr;
653 currentPipelineGeneration = 0;
654 currentGraphicsSrb = nullptr;
655 currentComputeSrb = nullptr;
656 currentSrbGeneration = 0;
657 currentIndexBuffer = nullptr;
658 currentIndexOffset = 0;
659 currentIndexFormat = DXGI_FORMAT_R16_UINT;
660 memset(currentVertexBuffers, 0, sizeof(currentVertexBuffers));
661 memset(currentVertexOffsets, 0, sizeof(currentVertexOffsets));
662 }
663};
664
666{
667 static const int TIMESTAMP_PAIRS = 2;
668
672
673 bool prepare(QRhiD3D11 *rhiD);
674 void destroy();
675 bool tryQueryTimestamps(int idx, ID3D11DeviceContext *context, double *elapsedSec);
676};
677
679{
680 QD3D11SwapChain(QRhiImplementation *rhi);
682 void destroy() override;
683
684 QRhiCommandBuffer *currentFrameCommandBuffer() override;
686 QRhiRenderTarget *currentFrameRenderTarget(StereoTargetBuffer targetBuffer) override;
687
688 QSize surfacePixelSize() override;
689 bool isFormatSupported(Format f) override;
691
694
695 void releaseBuffers();
696 bool newColorBuffer(const QSize &size, DXGI_FORMAT format, DXGI_SAMPLE_DESC sampleDesc,
697 ID3D11Texture2D **tex, ID3D11RenderTargetView **rtv) const;
698
699 QWindow *window = nullptr;
711 static const int BUFFER_COUNT = 2;
716 int frameCount = 0;
725};
726
728{
729public:
730 QRhiDriverInfo info() const override;
731
734};
735
737{
738public:
739 QRhiD3D11(QRhiD3D11InitParams *params, QRhiD3D11NativeHandles *importDevice = nullptr);
740
741 bool create(QRhi::Flags flags) override;
742 void destroy() override;
743 QRhi::AdapterList enumerateAdaptersBeforeCreate(QRhiNativeHandles *nativeHandles) const override;
744
748 QRhiBuffer *createBuffer(QRhiBuffer::Type type,
749 QRhiBuffer::UsageFlags usage,
750 quint32 size) override;
751 QRhiRenderBuffer *createRenderBuffer(QRhiRenderBuffer::Type type,
752 const QSize &pixelSize,
753 int sampleCount,
754 QRhiRenderBuffer::Flags flags,
755 QRhiTexture::Format backingFormatHint) override;
756 QRhiTexture *createTexture(QRhiTexture::Format format,
757 const QSize &pixelSize,
758 int depth,
759 int arraySize,
760 int sampleCount,
761 QRhiTexture::Flags flags) override;
762 QRhiSampler *createSampler(QRhiSampler::Filter magFilter,
763 QRhiSampler::Filter minFilter,
764 QRhiSampler::Filter mipmapMode,
765 QRhiSampler:: AddressMode u,
766 QRhiSampler::AddressMode v,
767 QRhiSampler::AddressMode w) override;
768
769 QRhiTextureRenderTarget *createTextureRenderTarget(const QRhiTextureRenderTargetDescription &desc,
770 QRhiTextureRenderTarget::Flags flags) override;
771
772 QRhiShadingRateMap *createShadingRateMap() override;
773
774 QRhiSwapChain *createSwapChain() override;
775 QRhi::FrameOpResult beginFrame(QRhiSwapChain *swapChain, QRhi::BeginFrameFlags flags) override;
776 QRhi::FrameOpResult endFrame(QRhiSwapChain *swapChain, QRhi::EndFrameFlags flags) override;
777 QRhi::FrameOpResult beginOffscreenFrame(QRhiCommandBuffer **cb, QRhi::BeginFrameFlags flags) override;
778 QRhi::FrameOpResult endOffscreenFrame(QRhi::EndFrameFlags flags) override;
779 QRhi::FrameOpResult finish() override;
780
781 void resourceUpdate(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override;
782
783 void beginPass(QRhiCommandBuffer *cb,
784 QRhiRenderTarget *rt,
785 const QColor &colorClearValue,
786 const QRhiDepthStencilClearValue &depthStencilClearValue,
787 QRhiResourceUpdateBatch *resourceUpdates,
788 QRhiCommandBuffer::BeginPassFlags flags) override;
789 void endPass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override;
790
791 void setGraphicsPipeline(QRhiCommandBuffer *cb,
792 QRhiGraphicsPipeline *ps) override;
793
794 void setShaderResources(QRhiCommandBuffer *cb,
795 QRhiShaderResourceBindings *srb,
796 int dynamicOffsetCount,
797 const QRhiCommandBuffer::DynamicOffset *dynamicOffsets) override;
798
799 void setVertexInput(QRhiCommandBuffer *cb,
800 int startBinding, int bindingCount, const QRhiCommandBuffer::VertexInput *bindings,
801 QRhiBuffer *indexBuf, quint32 indexOffset,
802 QRhiCommandBuffer::IndexFormat indexFormat) override;
803
804 void setViewport(QRhiCommandBuffer *cb, const QRhiViewport &viewport) override;
805 void setScissor(QRhiCommandBuffer *cb, const QRhiScissor &scissor) override;
806 void setBlendConstants(QRhiCommandBuffer *cb, const QColor &c) override;
807 void setStencilRef(QRhiCommandBuffer *cb, quint32 refValue) override;
808 void setShadingRate(QRhiCommandBuffer *cb, const QSize &coarsePixelSize) override;
809
810 void draw(QRhiCommandBuffer *cb, quint32 vertexCount,
811 quint32 instanceCount, quint32 firstVertex, quint32 firstInstance) override;
812
813 void drawIndexed(QRhiCommandBuffer *cb, quint32 indexCount,
814 quint32 instanceCount, quint32 firstIndex,
815 qint32 vertexOffset, quint32 firstInstance) override;
816
817 void drawIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer,
818 quint32 indirectBufferOffset, quint32 drawCount, quint32 stride) override;
819
820 void drawIndexedIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer,
821 quint32 indirectBufferOffset, quint32 drawCount, quint32 stride) override;
822
823 void debugMarkBegin(QRhiCommandBuffer *cb, const QByteArray &name) override;
824 void debugMarkEnd(QRhiCommandBuffer *cb) override;
825 void debugMarkMsg(QRhiCommandBuffer *cb, const QByteArray &msg) override;
826
827 void beginComputePass(QRhiCommandBuffer *cb,
828 QRhiResourceUpdateBatch *resourceUpdates,
829 QRhiCommandBuffer::BeginPassFlags flags) override;
830 void endComputePass(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates) override;
831 void setComputePipeline(QRhiCommandBuffer *cb, QRhiComputePipeline *ps) override;
832 void dispatch(QRhiCommandBuffer *cb, int x, int y, int z) override;
833 void dispatchIndirect(QRhiCommandBuffer *cb, QRhiBuffer *indirectBuffer,
834 quint32 indirectBufferOffset) override;
835
836 void drawIndirectCount(QRhiCommandBuffer *cb,
837 QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset,
838 QRhiBuffer *countBuffer, quint32 countBufferOffset,
839 quint32 maxDrawCount, quint32 stride) override;
840 void drawIndexedIndirectCount(QRhiCommandBuffer *cb,
841 QRhiBuffer *indirectBuffer, quint32 indirectBufferOffset,
842 QRhiBuffer *countBuffer, quint32 countBufferOffset,
843 quint32 maxDrawCount, quint32 stride) override;
844
845 const QRhiNativeHandles *nativeHandles(QRhiCommandBuffer *cb) override;
846 void beginExternal(QRhiCommandBuffer *cb) override;
847 void endExternal(QRhiCommandBuffer *cb) override;
848 double lastCompletedGpuTime(QRhiCommandBuffer *cb) override;
849
850 QList<int> supportedSampleCounts() const override;
851 QList<QSize> supportedShadingRates(int sampleCount) const override;
852 int ubufAlignment() const override;
853 bool isYUpInFramebuffer() const override;
854 bool isYUpInNDC() const override;
855 bool isClipDepthZeroToOne() const override;
856 QMatrix4x4 clipSpaceCorrMatrix() const override;
857 bool isTextureFormatSupported(QRhiTexture::Format format, QRhiTexture::Flags flags) const override;
858 bool isFeatureSupported(QRhi::Feature feature) const override;
859 int resourceLimit(QRhi::ResourceLimit limit) const override;
860 const QRhiNativeHandles *nativeHandles() override;
861 QRhiDriverInfo driverInfo() const override;
862 QRhiStats statistics() override;
864 void setQueueSubmitParams(QRhiNativeHandles *params) override;
866 bool isDeviceLost() const override;
867
868 QByteArray pipelineCacheData() override;
869 void setPipelineCacheData(const QByteArray &data) override;
870
872 int layer, int level, const QRhiTextureSubresourceUploadDescription &subresDesc);
873 void enqueueResourceUpdates(QRhiCommandBuffer *cb, QRhiResourceUpdateBatch *resourceUpdates);
875 const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[]);
877
879 const QD3D11ShaderResourceBindings::ResourceBatches &allResourceBatches,
880 const uint *dynOfsPairs, int dynOfsPairCount,
881 bool offsetOnlyChange,
885 DXGI_SAMPLE_DESC effectiveSampleDesc(int sampleCount) const;
887 void reportLiveObjects(ID3D11Device *device);
888 void clearShaderCache();
889 QByteArray compileHlslShaderSource(const QShader &shader, QShader::Variant shaderVariant, uint flags,
890 QString *error, QShaderKey *usedShaderKey);
892
894 bool debugLayer = false;
895 UINT maxFrameLatency = 2; // 1-3, use 2 to keep CPU-GPU parallelism while reducing lag compared to tripple buffering
897 ID3D11Device *dev = nullptr;
907 bool deviceLost = false;
910
911 struct {
923 } contextState;
924
932
949
959
960 // This is what gets exposed as the "pipeline cache", not that that concept
961 // applies anyway. Here we are just storing the DX bytecode for a shader so
962 // we can skip the HLSL->DXBC compilation when the QShader has HLSL source
963 // code and the same shader source has already been compiled before.
964 // m_shaderCache seemingly does the same, but this here does not care about
965 // the ID3D11*Shader, this is just about the bytecode and about allowing
966 // the data to be serialized to persistent storage and then reloaded in
967 // future runs of the app, or when creating another QRhi, etc.
975};
976
979
980inline bool operator==(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
981{
982 return a.sourceHash == b.sourceHash
983 && a.target == b.target
984 && a.entryPoint == b.entryPoint
985 && a.compileFlags == b.compileFlags;
986}
987
988inline bool operator!=(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
989{
990 return !(a == b);
991}
992
993inline size_t qHash(const QRhiD3D11::BytecodeCacheKey &k, size_t seed = 0) noexcept
994{
995 return qHashMulti(seed, k.sourceHash, k.target, k.entryPoint, k.compileFlags);
996}
997
998QT_END_NAMESPACE
999
1000#endif
QRhiDriverInfo info() const override
QRhiDriverInfo adapterInfo
const char * constData() const
Definition qrhi_p.h:414
int gsHighestActiveSrvBinding
void setScissor(QRhiCommandBuffer *cb, const QRhiScissor &scissor) override
bool deviceLost
void debugMarkMsg(QRhiCommandBuffer *cb, const QByteArray &msg) override
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)
void updateShaderResourceBindings(QD3D11ShaderResourceBindings *srbD, const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[])
QRhiStats statistics() override
QHash< BytecodeCacheKey, QByteArray > m_bytecodeCache
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
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
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
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
static QRhiResourceUpdateBatchPrivate * get(QRhiResourceUpdateBatch *b)
Definition qrhi_p.h:639
void fillDriverInfo(QRhiDriverInfo *info, const DXGI_ADAPTER_DESC1 &desc)
Combined button and popup list for selecting options.
@ UnBounded
Definition qrhi_p.h:327
@ Bounded
Definition qrhi_p.h:328
#define QRHI_RES_RHI(t)
Definition qrhi_p.h:31
#define QRHI_RES(t, x)
Definition qrhi_p.h:30
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 std::pair< int, int > mapBinding(int binding, int stageIndex, const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[])
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 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 DXGI_FORMAT toD3DAttributeFormat(QRhiVertexInputAttribute::Format format)
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)
Q_DECLARE_TYPEINFO(QD3D11ShaderResourceBindings::BoundResourceData, Q_RELOCATABLE_TYPE)
bool operator==(const QRhiD3D11::BytecodeCacheKey &a, const QRhiD3D11::BytecodeCacheKey &b) noexcept
bool hasPendingDynamicUpdates
Definition qrhid3d11_p.h:45
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:44
ID3D11Buffer * buffer
Definition qrhid3d11_p.h:43
QD3D11Buffer(QRhiImplementation *rhi, Type type, UsageFlags usage, quint32 size)
char * beginFullDynamicBufferUpdateForCurrentFrame() override
bool create() override
Creates the corresponding native graphics resources.
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
QHash< quint32, ID3D11UnorderedAccessView * > uavs
Definition qrhid3d11_p.h:46
QRhiBuffer::NativeBuffer nativeBuffer() override
ID3D11UnorderedAccessView * unorderedAccessView(quint32 offset)
QRhiRenderTarget * currentTarget
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
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:63
DXGI_FORMAT dxgiFormat
Definition qrhid3d11_p.h:64
ID3D11DepthStencilView * dsv
Definition qrhid3d11_p.h:62
void destroy() override
Releases (or requests deferred releasing of) the underlying native graphics resources.
DXGI_SAMPLE_DESC sampleDesc
Definition qrhid3d11_p.h:65
bool create() override
Creates the corresponding native graphics resources.
QRhiTexture::Format backingFormat() const override
ID3D11Texture2D * tex
Definition qrhid3d11_p.h:61
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:94
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:92
bool prepareCreate(QSize *adjustedSize=nullptr)
DXGI_FORMAT dxgiFormat
Definition qrhid3d11_p.h:97
QD3D11Texture(QRhiImplementation *rhi, Format format, const QSize &pixelSize, int depth, int arraySize, int sampleCount, Flags flags)
ID3D11UnorderedAccessView * unorderedAccessViewForLevel(int level)
DXGI_SAMPLE_DESC sampleDesc
Definition qrhid3d11_p.h:99
bool finishCreate()
ID3D11ShaderResourceView * srv
Definition qrhid3d11_p.h:96
ID3D11Texture3D * tex3D
Definition qrhid3d11_p.h:93
ID3D11Resource * textureResource() const
Definition qrhid3d11_p.h:83
ID3D11Buffer * stagingBuf
QRhiReadbackResult * result
OffscreenFrame(QRhiImplementation *rhi)
ID3D11Query * tsDisjointQuery
ID3D11Query * tsQueries[2]
QD3D11CommandBuffer cbWrapper
Shader(IUnknown *s, const QByteArray &bytecode, const QShader::NativeResourceBindingMap &rbm)
QByteArray bytecode
QRhiReadbackResult * result
QRhiTexture::Format format
QRhiReadbackDescription desc
ID3D11Texture2D * stagingTex
\inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h
Definition qrhi.h:1962
\inmodule QtGuiPrivate \inheaderfile rhi/qrhi.h
Definition qrhi.h:1566
ID3D11Buffer * buffers[MAX_VERTEX_BUFFER_BINDING_COUNT]
QD3D11RenderTargetData::Views rtViews
ID3D11DepthStencilView * swapchainDsv
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