private MTLTextureUsage TranslateUsage(MgImageUsageFlagBits flags) { MTLTextureUsage output = 0; if ((flags & MgImageUsageFlagBits.COLOR_ATTACHMENT_BIT) == MgImageUsageFlagBits.COLOR_ATTACHMENT_BIT) { output |= MTLTextureUsage.RenderTarget; } if ((flags & MgImageUsageFlagBits.DEPTH_STENCIL_ATTACHMENT_BIT) == MgImageUsageFlagBits.DEPTH_STENCIL_ATTACHMENT_BIT) { output |= MTLTextureUsage.RenderTarget; } if ((flags & MgImageUsageFlagBits.TRANSFER_DST_BIT) == MgImageUsageFlagBits.TRANSFER_DST_BIT) { output |= MTLTextureUsage.Blit; } if ((flags & MgImageUsageFlagBits.TRANSFER_SRC_BIT) == MgImageUsageFlagBits.TRANSFER_SRC_BIT) { output |= MTLTextureUsage.PixelFormatView; } if ((flags & MgImageUsageFlagBits.SAMPLED_BIT) == MgImageUsageFlagBits.SAMPLED_BIT) { output |= MTLTextureUsage.ShaderRead; } if ((flags & MgImageUsageFlagBits.STORAGE_BIT) == MgImageUsageFlagBits.STORAGE_BIT) { output |= MTLTextureUsage.ShaderWrite; } return(output); }
internal static MTLTextureUsage VdToMTLTextureUsage(TextureUsage usage) { MTLTextureUsage ret = MTLTextureUsage.Unknown; if ((usage & TextureUsage.Sampled) == TextureUsage.Sampled) { ret |= MTLTextureUsage.ShaderRead; } if ((usage & TextureUsage.Storage) == TextureUsage.Storage) { ret |= MTLTextureUsage.ShaderWrite; } if ((usage & TextureUsage.DepthStencil) == TextureUsage.DepthStencil || (usage & TextureUsage.RenderTarget) == TextureUsage.RenderTarget) { ret |= MTLTextureUsage.RenderTarget; } return(ret); }