![]() |
Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
|
#include <qrhimetal_p.h>
Classes | |
struct | TessDrawArgs |
Static Public Member Functions | |
static bool | probe (QRhiMetalInitParams *params) |
static QRhiSwapChainProxyData | updateSwapChainProxyData (QWindow *window) |
Static Public Member Functions inherited from QRhiImplementation | |
static QRhiImplementation * | newInstance (QRhi::Implementation impl, QRhiInitParams *params, QRhiNativeHandles *importDevice) |
static const QRhiShaderResourceBinding::Data * | shaderResourceBindingData (const QRhiShaderResourceBinding &binding) |
static QRhiShaderResourceBinding::Data * | shaderResourceBindingData (QRhiShaderResourceBinding &binding) |
static bool | sortedBindingLessThan (const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b) |
Public Attributes | |
QRhi::Flags | rhiFlags |
bool | importedDevice = false |
bool | importedCmdQueue = false |
QMetalSwapChain * | currentSwapChain = nullptr |
QSet< QMetalSwapChain * > | swapchains |
QRhiMetalNativeHandles | nativeHandlesStruct |
QRhiDriverInfo | driverInfoStruct |
quint32 | osMajor = 0 |
quint32 | osMinor = 0 |
struct { | |
int maxTextureSize = 4096 | |
bool baseVertexAndInstance = true | |
QVector< int > supportedSampleCounts | |
bool isAppleGPU = false | |
int maxThreadGroupSize = 512 | |
bool multiView = false | |
bool shadingRateMap = false | |
} | caps |
QRhiMetalData * | d = nullptr |
Public Attributes inherited from QRhiImplementation | |
QRhi * | q |
bool | debugMarkers = false |
int | currentFrameSlot = 0 |
bool | inFrame = false |
QRhiAdapter * | requestedRhiAdapter = nullptr |
Static Public Attributes | |
static const int | SUPPORTED_STAGES = 5 |
Static Public Attributes inherited from QRhiImplementation | |
static const int | MAX_SHADER_CACHE_ENTRIES = 128 |
Definition at line 346 of file qrhimetal_p.h.
QRhiMetal::QRhiMetal | ( | QRhiMetalInitParams * | params, |
QRhiMetalNativeHandles * | importDevice = nullptr ) |
Definition at line 482 of file qrhimetal.mm.
References QRhiMetalData::QRhiMetalData(), d, importedCmdQueue, and importedDevice.
QRhiMetal::~QRhiMetal | ( | ) |
Definition at line 502 of file qrhimetal.mm.
References d.
void QRhiMetal::adjustForMultiViewDraw | ( | quint32 * | instanceCount, |
QRhiCommandBuffer * | cb ) |
Definition at line 2221 of file qrhimetal.mm.
References QMetalCommandBuffer::currentGraphicsPipeline, QMetalBuffer::d, QMetalGraphicsPipeline::d, and QMetalGraphicsPipelineData::ExtraBufferManager::HostVisible.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3189 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, enqueueResourceUpdates(), QMetalCommandBuffer::NoPass, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::resetPerPassState().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2373 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2390 of file qrhimetal.mm.
References currentSwapChain, QMetalSwapChainRenderTarget::d, d, QMetalSwapChain::ds, executeDeferredReleases(), finishActiveReadbacks(), QMetalRenderTargetData::ColorAtt::needsDrawableForResolveTex, QMetalRenderTargetData::ColorAtt::needsDrawableForTex, QMetalSwapChain::rtWrapper, and QMetalSwapChain::samples.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2544 of file qrhimetal.mm.
References d, executeDeferredReleases(), and finishActiveReadbacks().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3031 of file qrhimetal.mm.
References QMetalRenderTargetData::colorAttCount, QMetalTextureRenderTarget::create(), currentSwapChain, QMetalCommandBuffer::d, QMetalSwapChain::d, QMetalSwapChainRenderTarget::d, QMetalTextureRenderTarget::d, d, QMetalRenderTargetData::dsAttCount, enqueueResourceUpdates(), QMetalRenderTargetData::ColorAtt::needsDrawableForResolveTex, QMetalRenderTargetData::ColorAtt::needsDrawableForTex, QMetalCommandBuffer::NoPass, QMetalCommandBuffer::recordingPass, QMetalCommandBuffer::RenderPass, and QMetalCommandBuffer::resetPerPassState().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 729 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 556 of file qrhimetal.mm.
References d, and importedDevice.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 704 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1124 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1119 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1087 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1101 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1129 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1108 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 699 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1094 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1113 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2333 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2346 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2358 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 664 of file qrhimetal.mm.
References d, executeDeferredReleases(), and finishActiveReadbacks().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3233 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, QMetalCommandBuffer::currentComputePipeline, and QMetalCommandBuffer::recordingPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2254 of file qrhimetal.mm.
References QRhiMetal::TessDrawArgs::cbD, QMetalCommandBuffer::currentGraphicsPipeline, QMetalGraphicsPipeline::d, QRhiMetal::TessDrawArgs::NonIndexed, QMetalCommandBuffer::recordingPass, QMetalCommandBuffer::RenderPass, and tessellatedDraw().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2283 of file qrhimetal.mm.
References QRhiMetal::TessDrawArgs::cbD, QMetalCommandBuffer::currentGraphicsPipeline, QMetalCommandBuffer::currentIndexBuffer, QMetalGraphicsPipeline::d, QMetalCommandBuffer::recordingPass, QMetalCommandBuffer::RenderPass, and tessellatedDraw().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 926 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3204 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, enqueueResourceUpdates(), QMetalCommandBuffer::NoPass, and QMetalCommandBuffer::recordingPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2378 of file qrhimetal.mm.
References QMetalCommandBuffer::resetPerPassCachedState().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2443 of file qrhimetal.mm.
References QMetalSwapChain::currentFrameSlot, currentSwapChain, QMetalSwapChain::d, QMetalSwapChain::frameCount, and QMTL_FRAMES_IN_FLIGHT.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2565 of file qrhimetal.mm.
References d, and finishActiveReadbacks().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3175 of file qrhimetal.mm.
References enqueueResourceUpdates(), QMetalCommandBuffer::NoPass, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
void QRhiMetal::enqueueResourceUpdates | ( | QRhiCommandBuffer * | cb, |
QRhiResourceUpdateBatch * | resourceUpdates ) |
Definition at line 2802 of file qrhimetal.mm.
References QRhiResourceUpdateBatchPrivate::activeBufferOpCount, QRhiMetalData::BufferReadback::activeFrameSlot, QRhiResourceUpdateBatchPrivate::activeTextureOpCount, QRhiResourceUpdateBatchPrivate::TextureOp::Copy, currentSwapChain, QMetalBuffer::d, QMetalSwapChain::d, QMetalSwapChainRenderTarget::d, QMetalTexture::d, d, QRhiResourceUpdateBatchPrivate::BufferOp::data, QRhiResourceUpdateBatchPrivate::TextureOp::dst, QRhiResourceUpdateBatchPrivate::BufferOp::DynamicUpdate, executeBufferHostWritesForCurrentFrame(), QRhiResourceUpdateBatchPrivate::free(), QRhiResourceUpdateBatchPrivate::TextureOp::GenMips, QRhiResourceUpdateBatchPrivate::get(), QMTL_FRAMES_IN_FLIGHT, QRhiResourceUpdateBatchPrivate::BufferOp::Read, QRhiResourceUpdateBatchPrivate::TextureOp::Read, QMetalSwapChain::rtWrapper, QMetalTexture::samples, QMetalBufferData::slotted, QRhiResourceUpdateBatchPrivate::TextureOp::src, QRhiMetalData::DeferredReleaseEntry::StagingBuffer, QRhiResourceUpdateBatchPrivate::BufferOp::StaticUpload, QRhiMetalData::DeferredReleaseEntry::type, QRhiResourceUpdateBatchPrivate::BufferOp::type, QRhiResourceUpdateBatchPrivate::TextureOp::type, and QRhiResourceUpdateBatchPrivate::TextureOp::Upload.
Referenced by beginComputePass(), beginPass(), endComputePass(), endPass(), and resourceUpdate().
void QRhiMetal::enqueueShaderResourceBindings | ( | QMetalShaderResourceBindings * | srbD, |
QMetalCommandBuffer * | cbD, | ||
int | dynamicOffsetCount, | ||
const QRhiCommandBuffer::DynamicOffset * | dynamicOffsets, | ||
bool | offsetOnlyChange, | ||
const QShader::NativeResourceBindingMap * | nativeResourceBindingMaps[SUPPORTED_STAGES] ) |
Definition at line 1289 of file qrhimetal.mm.
References QMetalShaderResourceBindingsData::COMPUTE, QMetalCommandBuffer::ComputePass, QMetalCommandBuffer::d, QMetalShaderResourceBindingsData::FRAGMENT, QMetalCommandBuffer::recordingPass, QMetalCommandBuffer::RenderPass, SUPPORTED_STAGES, QMetalShaderResourceBindingsData::TESSCTRL, QMetalShaderResourceBindingsData::TESSEVAL, and QMetalShaderResourceBindingsData::VERTEX.
void QRhiMetal::enqueueSubresUpload | ( | QMetalTexture * | texD, |
void * | mp, | ||
void * | blitEncPtr, | ||
int | layer, | ||
int | level, | ||
const QRhiTextureSubresourceUploadDescription & | subresDesc, | ||
qsizetype * | curOfs ) |
Definition at line 2675 of file qrhimetal.mm.
void QRhiMetal::executeBufferHostWritesForCurrentFrame | ( | QMetalBuffer * | bufD | ) |
Definition at line 3019 of file qrhimetal.mm.
Referenced by enqueueResourceUpdates(), setShaderResources(), and setVertexInput().
void QRhiMetal::executeBufferHostWritesForSlot | ( | QMetalBuffer * | bufD, |
int | slot ) |
Definition at line 2996 of file qrhimetal.mm.
References QMetalBuffer::d.
Referenced by QMetalBuffer::nativeBuffer().
void QRhiMetal::executeDeferredReleases | ( | bool | forced = false | ) |
Definition at line 3268 of file qrhimetal.mm.
References QRhiMetalData::DeferredReleaseEntry::Buffer, d, qrhimtl_releaseBuffer(), qrhimtl_releaseRenderBuffer(), qrhimtl_releaseSampler(), qrhimtl_releaseTexture(), QRhiMetalData::DeferredReleaseEntry::RenderBuffer, QRhiMetalData::DeferredReleaseEntry::Sampler, QRhiMetalData::DeferredReleaseEntry::Texture, and QRhiMetalData::DeferredReleaseEntry::type.
Referenced by beginFrame(), beginOffscreenFrame(), destroy(), and finish().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2584 of file qrhimetal.mm.
References currentSwapChain, d, executeDeferredReleases(), finishActiveReadbacks(), and QMetalCommandBuffer::NoPass.
void QRhiMetal::finishActiveReadbacks | ( | bool | forced = false | ) |
Definition at line 3311 of file qrhimetal.mm.
References d.
Referenced by beginFrame(), beginOffscreenFrame(), destroy(), endOffscreenFrame(), and finish().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 724 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 957 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 776 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 743 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 714 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 719 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2384 of file qrhimetal.mm.
References QMetalCommandBuffer::d, and QMetalCommandBufferData::lastGpuTime.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 938 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 921 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2368 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 972 of file qrhimetal.mm.
References f().
|
static |
Definition at line 513 of file qrhimetal.mm.
|
overridevirtual |
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 882 of file qrhimetal.mm.
References QMTL_FRAMES_IN_FLIGHT.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3024 of file qrhimetal.mm.
References enqueueResourceUpdates().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1943 of file qrhimetal.mm.
References QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3216 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, QMetalCommandBuffer::currentComputePipeline, QMetalCommandBuffer::currentGraphicsPipeline, and QMetalCommandBuffer::recordingPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1503 of file qrhimetal.mm.
References QMetalCommandBuffer::currentComputePipeline, QMetalCommandBuffer::currentGraphicsPipeline, QMetalGraphicsPipeline::d, QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1025 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 944 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1921 of file qrhimetal.mm.
References Bounded, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1533 of file qrhimetal.mm.
References QMetalComputePipelineData::bufferSizeBuffer, QMetalGraphicsPipelineData::bufferSizeBuffer, QMetalShaderResourceBindingsData::COMPUTE, QMetalCommandBuffer::currentComputePipeline, QMetalCommandBuffer::currentComputeSrb, QMetalCommandBuffer::currentGraphicsPipeline, QMetalCommandBuffer::currentGraphicsSrb, QMetalCommandBuffer::currentResSlot, QMetalBuffer::d, QMetalComputePipeline::d, QMetalGraphicsPipeline::d, executeBufferHostWritesForCurrentFrame(), QMetalShaderResourceBindingsData::FRAGMENT, QMetalShaderResourceBindings::lastUsedComputePipeline, QMetalShaderResourceBindings::lastUsedGraphicsPipeline, QMetalCommandBuffer::NoPass, QMetalCommandBuffer::recordingPass, QMetalBufferData::slotted, SUPPORTED_STAGES, QMetalShaderResourceBindingsData::TESSCTRL, QMetalShaderResourceBindingsData::TESSEVAL, and QMetalShaderResourceBindingsData::VERTEX.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1960 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1952 of file qrhimetal.mm.
References QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1815 of file qrhimetal.mm.
References QMetalCommandBufferData::currentFirstVertexBinding, QMetalCommandBuffer::currentGraphicsPipeline, QMetalCommandBuffer::currentGraphicsSrb, QMetalCommandBuffer::currentIndexBuffer, QMetalCommandBuffer::d, executeBufferHostWritesForCurrentFrame(), QMetalShaderResourceBindings::maxBinding, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1874 of file qrhimetal.mm.
References Bounded, QMetalCommandBuffer::recordingPass, QMetalCommandBuffer::RenderPass, and UnBounded.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 931 of file qrhimetal.mm.
qsizetype QRhiMetal::subresUploadByteSize | ( | const QRhiTextureSubresourceUploadDescription & | subresDesc | ) | const |
Definition at line 2665 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Implements QRhiImplementation.
Definition at line 693 of file qrhimetal.mm.
void QRhiMetal::tessellatedDraw | ( | const TessDrawArgs & | args | ) |
Definition at line 2034 of file qrhimetal.mm.
References QRhiMetal::TessDrawArgs::cbD, QMetalShaderResourceBindingsData::COMPUTE, QMetalCommandBuffer::currentGraphicsPipeline, QMetalBuffer::d, QMetalCommandBuffer::d, QMetalGraphicsPipeline::d, endTessellationComputeEncoding(), QMetalShaderResourceBindingsData::FRAGMENT, QMetalGraphicsPipelineData::ExtraBufferManager::HostVisible, QMetalGraphicsPipelineData::Tessellation::inControlPointCount, QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), QRhiMetal::TessDrawArgs::NonIndexed, rebindShaderResources(), QMetalShaderResourceBindingsData::TESSCTRL, QMetalShaderResourceBindingsData::TESSEVAL, and QMetalShaderResourceBindingsData::VERTEX.
Referenced by draw(), and drawIndexed().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 709 of file qrhimetal.mm.
|
static |
Definition at line 6351 of file qrhimetal.mm.
bool QRhiMetal::baseVertexAndInstance = true |
Definition at line 524 of file qrhimetal_p.h.
struct { ... } QRhiMetal::caps |
QMetalSwapChain* QRhiMetal::currentSwapChain = nullptr |
Definition at line 515 of file qrhimetal_p.h.
Referenced by beginFrame(), beginPass(), endFrame(), enqueueResourceUpdates(), and finish().
QRhiMetalData* QRhiMetal::d = nullptr |
Definition at line 532 of file qrhimetal_p.h.
Referenced by QRhiMetal(), ~QRhiMetal(), beginFrame(), beginOffscreenFrame(), beginPass(), QMetalComputePipeline::create(), create(), QMetalSwapChain::createOrResize(), QMetalGraphicsPipeline::createTessellationPipelines(), QMetalGraphicsPipeline::createVertexFragmentPipeline(), QMetalBuffer::destroy(), QMetalComputePipeline::destroy(), QMetalGraphicsPipeline::destroy(), QMetalRenderBuffer::destroy(), QMetalSampler::destroy(), QMetalShadingRateMap::destroy(), QMetalTexture::destroy(), destroy(), endOffscreenFrame(), enqueueResourceUpdates(), executeDeferredReleases(), finish(), finishActiveReadbacks(), releaseCachedResources(), QMetalGraphicsPipelineData::Tessellation::tescCompPipeline(), QMetalGraphicsPipelineData::Tessellation::teseFragRenderPipeline(), and QMetalGraphicsPipelineData::Tessellation::vsCompPipeline().
QRhiDriverInfo QRhiMetal::driverInfoStruct |
Definition at line 518 of file qrhimetal_p.h.
bool QRhiMetal::importedCmdQueue = false |
Definition at line 514 of file qrhimetal_p.h.
Referenced by QRhiMetal().
bool QRhiMetal::importedDevice = false |
Definition at line 513 of file qrhimetal_p.h.
Referenced by QRhiMetal(), and create().
bool QRhiMetal::isAppleGPU = false |
Definition at line 526 of file qrhimetal_p.h.
int QRhiMetal::maxTextureSize = 4096 |
Definition at line 523 of file qrhimetal_p.h.
int QRhiMetal::maxThreadGroupSize = 512 |
Definition at line 527 of file qrhimetal_p.h.
bool QRhiMetal::multiView = false |
Definition at line 528 of file qrhimetal_p.h.
QRhiMetalNativeHandles QRhiMetal::nativeHandlesStruct |
Definition at line 517 of file qrhimetal_p.h.
quint32 QRhiMetal::osMajor = 0 |
Definition at line 519 of file qrhimetal_p.h.
quint32 QRhiMetal::osMinor = 0 |
Definition at line 520 of file qrhimetal_p.h.
QRhi::Flags QRhiMetal::rhiFlags |
Definition at line 512 of file qrhimetal_p.h.
bool QRhiMetal::shadingRateMap = false |
Definition at line 529 of file qrhimetal_p.h.
|
static |
Definition at line 476 of file qrhimetal_p.h.
Referenced by enqueueShaderResourceBindings(), and setShaderResources().
QVector< int > QRhiMetal::supportedSampleCounts |
Definition at line 525 of file qrhimetal_p.h.
QSet<QMetalSwapChain *> QRhiMetal::swapchains |
Definition at line 516 of file qrhimetal_p.h.