![]() |
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 347 of file qrhimetal_p.h.
| QRhiMetal::QRhiMetal | ( | QRhiMetalInitParams * | params, |
| QRhiMetalNativeHandles * | importDevice = nullptr ) |
Definition at line 483 of file qrhimetal.mm.
References QRhiMetalData::QRhiMetalData(), d, importedCmdQueue, and importedDevice.
| QRhiMetal::~QRhiMetal | ( | ) |
Definition at line 503 of file qrhimetal.mm.
References d.
| void QRhiMetal::adjustForMultiViewDraw | ( | quint32 * | instanceCount, |
| QRhiCommandBuffer * | cb ) |
Definition at line 2225 of file qrhimetal.mm.
References QMetalCommandBuffer::currentGraphicsPipeline, QMetalBuffer::d, QMetalGraphicsPipeline::d, and QMetalGraphicsPipelineData::ExtraBufferManager::HostVisible.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3193 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, enqueueResourceUpdates(), QMetalCommandBuffer::NoPass, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::resetPerPassState().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2377 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2394 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 2548 of file qrhimetal.mm.
References d, executeDeferredReleases(), and finishActiveReadbacks().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3035 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 730 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 557 of file qrhimetal.mm.
References d, and importedDevice.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 705 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1125 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1120 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1088 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1102 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1130 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1109 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 700 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1095 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1114 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2337 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2350 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2362 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 665 of file qrhimetal.mm.
References d, executeDeferredReleases(), and finishActiveReadbacks().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3237 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, QMetalCommandBuffer::currentComputePipeline, and QMetalCommandBuffer::recordingPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2258 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 2287 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 927 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3208 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, enqueueResourceUpdates(), QMetalCommandBuffer::NoPass, and QMetalCommandBuffer::recordingPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2382 of file qrhimetal.mm.
References QMetalCommandBuffer::resetPerPassCachedState().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2447 of file qrhimetal.mm.
References QMetalSwapChain::currentFrameSlot, currentSwapChain, QMetalSwapChain::d, QMetalSwapChain::frameCount, and QMTL_FRAMES_IN_FLIGHT.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2569 of file qrhimetal.mm.
References d, and finishActiveReadbacks().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3179 of file qrhimetal.mm.
References enqueueResourceUpdates(), QMetalCommandBuffer::NoPass, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
| void QRhiMetal::enqueueResourceUpdates | ( | QRhiCommandBuffer * | cb, |
| QRhiResourceUpdateBatch * | resourceUpdates ) |
Definition at line 2806 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 1290 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 2679 of file qrhimetal.mm.
| void QRhiMetal::executeBufferHostWritesForCurrentFrame | ( | QMetalBuffer * | bufD | ) |
Definition at line 3023 of file qrhimetal.mm.
Referenced by enqueueResourceUpdates(), setShaderResources(), and setVertexInput().
| void QRhiMetal::executeBufferHostWritesForSlot | ( | QMetalBuffer * | bufD, |
| int | slot ) |
Definition at line 3000 of file qrhimetal.mm.
References QMetalBuffer::d.
Referenced by QMetalBuffer::nativeBuffer().
| void QRhiMetal::executeDeferredReleases | ( | bool | forced = false | ) |
Definition at line 3272 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 2588 of file qrhimetal.mm.
References currentSwapChain, d, executeDeferredReleases(), finishActiveReadbacks(), and QMetalCommandBuffer::NoPass.
| void QRhiMetal::finishActiveReadbacks | ( | bool | forced = false | ) |
Definition at line 3315 of file qrhimetal.mm.
References d.
Referenced by beginFrame(), beginOffscreenFrame(), destroy(), endOffscreenFrame(), and finish().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 725 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 958 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 777 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 744 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 715 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 720 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2388 of file qrhimetal.mm.
References QMetalCommandBuffer::d, and QMetalCommandBufferData::lastGpuTime.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 939 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 922 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 2372 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 973 of file qrhimetal.mm.
References f().
|
static |
Definition at line 514 of file qrhimetal.mm.
|
overridevirtual |
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 883 of file qrhimetal.mm.
References QMTL_FRAMES_IN_FLIGHT.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3028 of file qrhimetal.mm.
References enqueueResourceUpdates().
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1947 of file qrhimetal.mm.
References QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 3220 of file qrhimetal.mm.
References QMetalCommandBuffer::ComputePass, QMetalCommandBuffer::currentComputePipeline, QMetalCommandBuffer::currentGraphicsPipeline, and QMetalCommandBuffer::recordingPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1507 of file qrhimetal.mm.
References QMetalCommandBuffer::currentComputePipeline, QMetalCommandBuffer::currentGraphicsPipeline, QMetalGraphicsPipeline::d, QMetalGraphicsPipeline::makeActiveForCurrentRenderPassEncoder(), QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1026 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 945 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1925 of file qrhimetal.mm.
References Bounded, QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1537 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 1964 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1956 of file qrhimetal.mm.
References QMetalCommandBuffer::recordingPass, and QMetalCommandBuffer::RenderPass.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 1819 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 1878 of file qrhimetal.mm.
References Bounded, QMetalCommandBuffer::recordingPass, QMetalCommandBuffer::RenderPass, and UnBounded.
|
overridevirtual |
Implements QRhiImplementation.
Definition at line 932 of file qrhimetal.mm.
| qsizetype QRhiMetal::subresUploadByteSize | ( | const QRhiTextureSubresourceUploadDescription & | subresDesc | ) | const |
Definition at line 2669 of file qrhimetal.mm.
|
overridevirtual |
Implements QRhiImplementation.
Implements QRhiImplementation.
Definition at line 694 of file qrhimetal.mm.
| void QRhiMetal::tessellatedDraw | ( | const TessDrawArgs & | args | ) |
Definition at line 2038 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 710 of file qrhimetal.mm.
|
static |
Definition at line 6357 of file qrhimetal.mm.
| bool QRhiMetal::baseVertexAndInstance = true |
Definition at line 525 of file qrhimetal_p.h.
| struct { ... } QRhiMetal::caps |
| QMetalSwapChain* QRhiMetal::currentSwapChain = nullptr |
Definition at line 516 of file qrhimetal_p.h.
Referenced by beginFrame(), beginPass(), endFrame(), enqueueResourceUpdates(), and finish().
| QRhiMetalData* QRhiMetal::d = nullptr |
Definition at line 533 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 519 of file qrhimetal_p.h.
| bool QRhiMetal::importedCmdQueue = false |
Definition at line 515 of file qrhimetal_p.h.
Referenced by QRhiMetal().
| bool QRhiMetal::importedDevice = false |
Definition at line 514 of file qrhimetal_p.h.
Referenced by QRhiMetal(), and create().
| bool QRhiMetal::isAppleGPU = false |
Definition at line 527 of file qrhimetal_p.h.
| int QRhiMetal::maxTextureSize = 4096 |
Definition at line 524 of file qrhimetal_p.h.
| int QRhiMetal::maxThreadGroupSize = 512 |
Definition at line 528 of file qrhimetal_p.h.
| bool QRhiMetal::multiView = false |
Definition at line 529 of file qrhimetal_p.h.
| QRhiMetalNativeHandles QRhiMetal::nativeHandlesStruct |
Definition at line 518 of file qrhimetal_p.h.
| quint32 QRhiMetal::osMajor = 0 |
Definition at line 520 of file qrhimetal_p.h.
| quint32 QRhiMetal::osMinor = 0 |
Definition at line 521 of file qrhimetal_p.h.
| QRhi::Flags QRhiMetal::rhiFlags |
Definition at line 513 of file qrhimetal_p.h.
| bool QRhiMetal::shadingRateMap = false |
Definition at line 530 of file qrhimetal_p.h.
|
static |
Definition at line 477 of file qrhimetal_p.h.
Referenced by enqueueShaderResourceBindings(), and setShaderResources().
| QVector< int > QRhiMetal::supportedSampleCounts |
Definition at line 526 of file qrhimetal_p.h.
| QSet<QMetalSwapChain *> QRhiMetal::swapchains |
Definition at line 517 of file qrhimetal_p.h.