yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// metal-util.h 2#pragma once 3 4#include "core/slang-basic.h" 5#include "metal-api.h" 6#include "slang-gfx.h" 7 8namespace gfx 9{ 10 11// Utility functions for Metal 12struct MetalUtil 13{ 14static NS ::SharedPtr < NS ::String > createString ( 15const char * str , 16NS ::StringEncoding encoding = NS ::UTF8StringEncoding ) 17 { 18NS ::SharedPtr < NS ::String > nsString = 19NS ::TransferPtr (NS ::String ::alloc ()-> init (str ,encoding )); 20return nsString ; 21 } 22 23static NS ::SharedPtr < NS ::String > createStringView ( 24void * bytes , 25size_t len , 26NS ::StringEncoding encoding = NS ::UTF8StringEncoding ) 27 { 28NS ::SharedPtr < NS ::String > nsString = 29NS ::TransferPtr (NS ::String ::alloc ()-> init (bytes ,len ,encoding , false)); 30return nsString ; 31 } 32 33static MTL ::PixelFormat translatePixelFormat (Format format ); 34static MTL ::VertexFormat translateVertexFormat (Format format ); 35 36static bool isDepthFormat (MTL ::PixelFormat format ); 37static bool isStencilFormat (MTL ::PixelFormat format ); 38 39static MTL ::SamplerMinMagFilter translateSamplerMinMagFilter (TextureFilteringMode mode ); 40static MTL ::SamplerMipFilter translateSamplerMipFilter (TextureFilteringMode mode ); 41static MTL ::SamplerAddressMode translateSamplerAddressMode (TextureAddressingMode mode ); 42static MTL ::CompareFunction translateCompareFunction (ComparisonFunc func ); 43static MTL ::StencilOperation translateStencilOperation (StencilOp op ); 44 45static MTL ::VertexStepFunction translateVertexStepFunction (InputSlotClass slotClass ); 46 47static MTL ::PrimitiveType translatePrimitiveType (PrimitiveTopology topology ); 48static MTL ::PrimitiveTopologyClass translatePrimitiveTopologyClass (PrimitiveType type ); 49 50static MTL ::BlendFactor translateBlendFactor (BlendFactor factor ); 51static MTL ::BlendOperation translateBlendOperation (BlendOp op ); 52static MTL ::ColorWriteMask translateColorWriteMask (RenderTargetWriteMask ::Type mask ); 53 54static MTL ::Winding translateWinding (FrontFaceMode mode ); 55static MTL ::CullMode translateCullMode (CullMode mode ); 56static MTL ::TriangleFillMode translateTriangleFillMode (FillMode mode ); 57}; 58 59struct ScopedAutoreleasePool 60{ 61ScopedAutoreleasePool () {m_pool = NS ::AutoreleasePool ::alloc ()-> init (); } 62 ~ScopedAutoreleasePool () {m_pool -> drain (); } 63NS ::AutoreleasePool * m_pool ; 64}; 65 66#define AUTORELEASEPOOL ScopedAutoreleasePool _pool_; 67 68}// namespace gfx