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
qrhimetal.mm File Reference

(383ed62676ff3ecfcd2f4b06365e07e4699a2f42)

#include "qrhimetal_p.h"
#include "qshader_p.h"
#include <QGuiApplication>
#include <QWindow>
#include <QUrl>
#include <QFile>
#include <QTemporaryFile>
#include <QFileInfo>
#include <qmath.h>
#include <QOperatingSystemVersion>
#include <QtCore/private/qcore_mac_p.h>
#include <QtGui/private/qmetallayer_p.h>
#include <UIKit/UIKit.h>
#include <QuartzCore/CATransaction.h>
#include <Metal/Metal.h>
+ Include dependency graph for qrhimetal.mm:

Go to the source code of this file.

Classes

struct  QMetalShader
 \variable QRhiMetalCommandBufferNativeHandles::commandBuffer More...
 
struct  QRhiMetalData
 
struct  QRhiMetalData::DeferredReleaseEntry
 
struct  QRhiMetalData::OffscreenFrame
 
struct  QRhiMetalData::TextureReadback
 
struct  QRhiMetalData::BufferReadback
 
struct  QMetalBufferData
 
struct  QMetalBufferData::BufferUpdate
 
struct  QMetalRenderBufferData
 
struct  QMetalTextureData
 
struct  QMetalSamplerData
 
struct  QMetalShadingRateMapData
 
struct  QMetalShaderResourceBindingsData
 
struct  QMetalShaderResourceBindingsData::Stage
 
struct  QMetalShaderResourceBindingsData::Stage::Buffer
 
struct  QMetalShaderResourceBindingsData::Stage::Texture
 
struct  QMetalShaderResourceBindingsData::Stage::Sampler
 
struct  QMetalCommandBufferData
 
struct  QMetalRenderTargetData
 
struct  QMetalRenderTargetData::ColorAtt
 
struct  QMetalGraphicsPipelineData
 
struct  QMetalGraphicsPipelineData::ExtraBufferManager
 
struct  QMetalGraphicsPipelineData::Tessellation
 
struct  QMetalComputePipelineData
 
struct  QMetalSwapChainData
 
struct  QMetalPipelineCacheDataHeader
 

Macros

#define QRHI_METAL_DISABLE_BINARY_ARCHIVE
 
#define QRHI_METAL_COMMAND_BUFFERS_WITH_UNRETAINED_REFERENCES
 

Enumerations

enum class  BindingType {
  Buffer , Texture , Sampler , Buffer ,
  Texture , Sampler
}
 
enum class  BindingType {
  Buffer , Texture , Sampler , Buffer ,
  Texture , Sampler
}
 

Functions

 Q_DECLARE_TYPEINFO (QRhiMetalData::DeferredReleaseEntry, Q_RELOCATABLE_TYPE)
 
 Q_DECLARE_TYPEINFO (QRhiMetalData::TextureReadback, Q_RELOCATABLE_TYPE)
 
template<class Int>
Int aligned (Int v, Int byteAlign)
 
static int mapBinding (int binding, int stageIndex, const QShader::NativeResourceBindingMap *nativeResourceBindingMaps[], BindingType type)
 
static void bindStageBuffers (QMetalCommandBuffer *cbD, int stage, const QRhiBatchedBindings< id< MTLBuffer > >::Batch &bufferBatch, const QRhiBatchedBindings< NSUInteger >::Batch &offsetBatch)
 
static void bindStageTextures (QMetalCommandBuffer *cbD, int stage, const QRhiBatchedBindings< id< MTLTexture > >::Batch &textureBatch)
 
static void bindStageSamplers (QMetalCommandBuffer *cbD, int encoderStage, const QRhiBatchedBindings< id< MTLSamplerState > >::Batch &samplerBatch)
 
static void rebindShaderResources (QMetalCommandBuffer *cbD, int resourceStage, int encoderStage, const QMetalShaderResourceBindingsData *customBindingState=nullptr)
 
static QRhiShaderResourceBinding::StageFlag toRhiSrbStage (int stage)
 
static id< MTLComputeCommandEncoder > tessellationComputeEncoder (QMetalCommandBuffer *cbD)
 
static void endTessellationComputeEncoding (QMetalCommandBuffer *cbD)
 
static void qrhimtl_releaseBuffer (const QRhiMetalData::DeferredReleaseEntry &e)
 
static void qrhimtl_releaseRenderBuffer (const QRhiMetalData::DeferredReleaseEntry &e)
 
static void qrhimtl_releaseTexture (const QRhiMetalData::DeferredReleaseEntry &e)
 
static void qrhimtl_releaseSampler (const QRhiMetalData::DeferredReleaseEntry &e)
 
static MTLPixelFormat toMetalTextureFormat (QRhiTexture::Format format, QRhiTexture::Flags flags, const QRhiMetal *d)
 
static MTLSamplerMinMagFilter toMetalFilter (QRhiSampler::Filter f)
 
static MTLSamplerMipFilter toMetalMipmapMode (QRhiSampler::Filter f)
 
static MTLSamplerAddressMode toMetalAddressMode (QRhiSampler::AddressMode m)
 
static MTLCompareFunction toMetalTextureCompareFunction (QRhiSampler::CompareOp op)
 
static MTLVertexFormat toMetalAttributeFormat (QRhiVertexInputAttribute::Format format)
 
static MTLBlendFactor toMetalBlendFactor (QRhiGraphicsPipeline::BlendFactor f)
 
static MTLBlendOperation toMetalBlendOp (QRhiGraphicsPipeline::BlendOp op)
 
static uint toMetalColorWriteMask (QRhiGraphicsPipeline::ColorMask c)
 
static MTLCompareFunction toMetalCompareOp (QRhiGraphicsPipeline::CompareOp op)
 
static MTLStencilOperation toMetalStencilOp (QRhiGraphicsPipeline::StencilOp op)
 
static MTLPrimitiveType toMetalPrimitiveType (QRhiGraphicsPipeline::Topology t)
 
static MTLPrimitiveTopologyClass toMetalPrimitiveTopologyClass (QRhiGraphicsPipeline::Topology t)
 
static MTLCullMode toMetalCullMode (QRhiGraphicsPipeline::CullMode c)
 
static MTLTriangleFillMode toMetalTriangleFillMode (QRhiGraphicsPipeline::PolygonMode mode)
 
static MTLWinding toMetalTessellationWindingOrder (QShaderDescription::TessellationWindingOrder w)
 
static MTLTessellationPartitionMode toMetalTessellationPartitionMode (QShaderDescription::TessellationPartitioning p)
 
static MTLLanguageVersion toMetalLanguageVersion (const QShaderVersion &version)
 
static bool indexTaken (quint32 index, quint64 indices)
 
static void takeIndex (quint32 index, quint64 &indices)
 
static int nextAttributeIndex (quint64 indices)
 
static int aligned (quint32 offset, quint32 alignment)
 
template<typename T>
static void addUnusedVertexAttribute (const T &variable, QRhiMetal *rhiD, quint32 &offset, quint32 &vertexAlignment)
 
template<typename T>
static void addVertexAttribute (const T &variable, int binding, QRhiMetal *rhiD, int &index, quint32 &offset, MTLVertexAttributeDescriptorArray *attributes, quint64 &indices, quint32 &vertexAlignment)
 
static bool matches (const QList< QShaderDescription::BlockVariable > &a, const QList< QShaderDescription::BlockVariable > &b)
 
static bool matches (const QShaderDescription::InOutVariable &a, const QShaderDescription::InOutVariable &b)
 
static CAMetalLayer * layerForWindow (QWindow *window)
 

Macro Definition Documentation

◆ QRHI_METAL_COMMAND_BUFFERS_WITH_UNRETAINED_REFERENCES

#define QRHI_METAL_COMMAND_BUFFERS_WITH_UNRETAINED_REFERENCES

Definition at line 56 of file qrhimetal.mm.

◆ QRHI_METAL_DISABLE_BINARY_ARCHIVE

#define QRHI_METAL_DISABLE_BINARY_ARCHIVE

Definition at line 51 of file qrhimetal.mm.

Enumeration Type Documentation

◆ BindingType [1/2]

enum class BindingType
strong
Enumerator
Buffer 
Texture 
Sampler 
Buffer 
Texture 
Sampler 

Definition at line 1130 of file qrhimetal.mm.

◆ BindingType [2/2]

enum class BindingType
strong
Enumerator
Buffer 
Texture 
Sampler 
Buffer 
Texture 
Sampler 

Definition at line 1130 of file qrhimetal.mm.

Function Documentation

◆ addUnusedVertexAttribute()

template<typename T>
static void addUnusedVertexAttribute ( const T & variable,
QRhiMetal * rhiD,
quint32 & offset,
quint32 & vertexAlignment )
static

Definition at line 5357 of file qrhimetal.mm.

◆ addVertexAttribute()

template<typename T>
static void addVertexAttribute ( const T & variable,
int binding,
QRhiMetal * rhiD,
int & index,
quint32 & offset,
MTLVertexAttributeDescriptorArray * attributes,
quint64 & indices,
quint32 & vertexAlignment )
static

Definition at line 5387 of file qrhimetal.mm.

◆ aligned() [1/2]

template<class Int>
Int aligned ( Int v,
Int byteAlign )
inline

Definition at line 507 of file qrhimetal.mm.

◆ aligned() [2/2]

static int aligned ( quint32 offset,
quint32 alignment )
inlinestatic

Definition at line 5351 of file qrhimetal.mm.

◆ bindStageBuffers()

static void bindStageBuffers ( QMetalCommandBuffer * cbD,
int stage,
const QRhiBatchedBindings< id< MTLBuffer > >::Batch & bufferBatch,
const QRhiBatchedBindings< NSUInteger >::Batch & offsetBatch )
inlinestatic

Definition at line 1155 of file qrhimetal.mm.

◆ bindStageSamplers()

static void bindStageSamplers ( QMetalCommandBuffer * cbD,
int encoderStage,
const QRhiBatchedBindings< id< MTLSamplerState > >::Batch & samplerBatch )
inlinestatic

Definition at line 1213 of file qrhimetal.mm.

◆ bindStageTextures()

static void bindStageTextures ( QMetalCommandBuffer * cbD,
int stage,
const QRhiBatchedBindings< id< MTLTexture > >::Batch & textureBatch )
inlinestatic

Definition at line 1186 of file qrhimetal.mm.

◆ endTessellationComputeEncoding()

static void endTessellationComputeEncoding ( QMetalCommandBuffer * cbD)
static

Definition at line 1965 of file qrhimetal.mm.

◆ indexTaken()

static bool indexTaken ( quint32 index,
quint64 indices )
inlinestatic

Definition at line 5325 of file qrhimetal.mm.

◆ layerForWindow()

static CAMetalLayer * layerForWindow ( QWindow * window)
inlinestatic

Definition at line 6315 of file qrhimetal.mm.

◆ mapBinding()

static int mapBinding ( int binding,
int stageIndex,
const QShader::NativeResourceBindingMap * nativeResourceBindingMaps[],
BindingType type )
inlinestatic

Definition at line 1136 of file qrhimetal.mm.

◆ matches() [1/2]

static bool matches ( const QList< QShaderDescription::BlockVariable > & a,
const QList< QShaderDescription::BlockVariable > & b )
inlinestatic

Definition at line 5428 of file qrhimetal.mm.

◆ matches() [2/2]

static bool matches ( const QShaderDescription::InOutVariable & a,
const QShaderDescription::InOutVariable & b )
inlinestatic

Definition at line 5443 of file qrhimetal.mm.

◆ nextAttributeIndex()

static int nextAttributeIndex ( quint64 indices)
inlinestatic

Definition at line 5335 of file qrhimetal.mm.

◆ Q_DECLARE_TYPEINFO() [1/2]

◆ Q_DECLARE_TYPEINFO() [2/2]

◆ qrhimtl_releaseBuffer()

static void qrhimtl_releaseBuffer ( const QRhiMetalData::DeferredReleaseEntry & e)
static

Definition at line 3224 of file qrhimetal.mm.

◆ qrhimtl_releaseRenderBuffer()

static void qrhimtl_releaseRenderBuffer ( const QRhiMetalData::DeferredReleaseEntry & e)
static

Definition at line 3230 of file qrhimetal.mm.

◆ qrhimtl_releaseSampler()

static void qrhimtl_releaseSampler ( const QRhiMetalData::DeferredReleaseEntry & e)
static

Definition at line 3244 of file qrhimetal.mm.

◆ qrhimtl_releaseTexture()

static void qrhimtl_releaseTexture ( const QRhiMetalData::DeferredReleaseEntry & e)
static

Definition at line 3235 of file qrhimetal.mm.

◆ rebindShaderResources()

static void rebindShaderResources ( QMetalCommandBuffer * cbD,
int resourceStage,
int encoderStage,
const QMetalShaderResourceBindingsData * customBindingState = nullptr )
inlinestatic

Definition at line 1245 of file qrhimetal.mm.

◆ takeIndex()

static void takeIndex ( quint32 index,
quint64 & indices )
inlinestatic

Definition at line 5330 of file qrhimetal.mm.

◆ tessellationComputeEncoder()

static id< MTLComputeCommandEncoder > tessellationComputeEncoder ( QMetalCommandBuffer * cbD)
static

Definition at line 1952 of file qrhimetal.mm.

◆ toMetalAddressMode()

static MTLSamplerAddressMode toMetalAddressMode ( QRhiSampler::AddressMode m)
inlinestatic

Definition at line 4076 of file qrhimetal.mm.

◆ toMetalAttributeFormat()

static MTLVertexFormat toMetalAttributeFormat ( QRhiVertexInputAttribute::Format format)
inlinestatic

Definition at line 4575 of file qrhimetal.mm.

◆ toMetalBlendFactor()

static MTLBlendFactor toMetalBlendFactor ( QRhiGraphicsPipeline::BlendFactor f)
inlinestatic

Definition at line 4638 of file qrhimetal.mm.

◆ toMetalBlendOp()

static MTLBlendOperation toMetalBlendOp ( QRhiGraphicsPipeline::BlendOp op)
inlinestatic

Definition at line 4685 of file qrhimetal.mm.

◆ toMetalColorWriteMask()

static uint toMetalColorWriteMask ( QRhiGraphicsPipeline::ColorMask c)
inlinestatic

Definition at line 4704 of file qrhimetal.mm.

◆ toMetalCompareOp()

static MTLCompareFunction toMetalCompareOp ( QRhiGraphicsPipeline::CompareOp op)
inlinestatic

Definition at line 4718 of file qrhimetal.mm.

◆ toMetalCullMode()

static MTLCullMode toMetalCullMode ( QRhiGraphicsPipeline::CullMode c)
inlinestatic

Definition at line 4805 of file qrhimetal.mm.

◆ toMetalFilter()

static MTLSamplerMinMagFilter toMetalFilter ( QRhiSampler::Filter f)
inlinestatic

Definition at line 4048 of file qrhimetal.mm.

◆ toMetalLanguageVersion()

static MTLLanguageVersion toMetalLanguageVersion ( const QShaderVersion & version)
inlinestatic

Definition at line 4861 of file qrhimetal.mm.

◆ toMetalMipmapMode()

static MTLSamplerMipFilter toMetalMipmapMode ( QRhiSampler::Filter f)
inlinestatic

Definition at line 4061 of file qrhimetal.mm.

◆ toMetalPrimitiveTopologyClass()

static MTLPrimitiveTopologyClass toMetalPrimitiveTopologyClass ( QRhiGraphicsPipeline::Topology t)
inlinestatic

Definition at line 4787 of file qrhimetal.mm.

◆ toMetalPrimitiveType()

static MTLPrimitiveType toMetalPrimitiveType ( QRhiGraphicsPipeline::Topology t)
inlinestatic

Definition at line 4768 of file qrhimetal.mm.

◆ toMetalStencilOp()

static MTLStencilOperation toMetalStencilOp ( QRhiGraphicsPipeline::StencilOp op)
inlinestatic

Definition at line 4743 of file qrhimetal.mm.

◆ toMetalTessellationPartitionMode()

static MTLTessellationPartitionMode toMetalTessellationPartitionMode ( QShaderDescription::TessellationPartitioning p)
inlinestatic

Definition at line 4846 of file qrhimetal.mm.

◆ toMetalTessellationWindingOrder()

static MTLWinding toMetalTessellationWindingOrder ( QShaderDescription::TessellationWindingOrder w)
inlinestatic

Definition at line 4833 of file qrhimetal.mm.

◆ toMetalTextureCompareFunction()

static MTLCompareFunction toMetalTextureCompareFunction ( QRhiSampler::CompareOp op)
inlinestatic

Definition at line 4091 of file qrhimetal.mm.

◆ toMetalTextureFormat()

static MTLPixelFormat toMetalTextureFormat ( QRhiTexture::Format format,
QRhiTexture::Flags flags,
const QRhiMetal * d )
inlinestatic

Definition at line 3464 of file qrhimetal.mm.

◆ toMetalTriangleFillMode()

static MTLTriangleFillMode toMetalTriangleFillMode ( QRhiGraphicsPipeline::PolygonMode mode)
inlinestatic

Definition at line 4820 of file qrhimetal.mm.

◆ toRhiSrbStage()

static QRhiShaderResourceBinding::StageFlag toRhiSrbStage ( int stage)
inlinestatic

Definition at line 1267 of file qrhimetal.mm.