metal: fix a couple compiler warnings

This commit is contained in:
Alex Szpakowski
2021-12-24 18:04:11 -04:00
parent 7eb8366b2d
commit dab174b120
3 changed files with 32 additions and 15 deletions
+2 -1
View File
@@ -36,13 +36,14 @@ class Metal
{
public:
struct PixelFormatDesc
struct API_AVAILABLE(macos(10.15), ios(13.0)) PixelFormatDesc
{
MTLPixelFormat format;
bool swizzled = false;
MTLTextureSwizzleChannels swizzle;
};
API_AVAILABLE(macos(10.15), ios(13.0))
static PixelFormatDesc convertPixelFormat(PixelFormat format, bool &isSRGB);
}; // Metal
+19 -9
View File
@@ -926,9 +926,14 @@ id<MTLRenderPipelineState> Shader::getCachedRenderPipeline(const RenderPipelineK
MTLRenderPipelineColorAttachmentDescriptor *attachment = desc.colorAttachments[i];
bool isSRGB = false;
auto formatdesc = Metal::convertPixelFormat(format, isSRGB);
attachment.pixelFormat = formatdesc.format;
if (@available(macOS 10.15, iOS 13, *))
{
// We already don't really support metal on older systems, this just
// silences a compiler warning about it.
bool isSRGB = false;
auto formatdesc = Metal::convertPixelFormat(format, isSRGB);
attachment.pixelFormat = formatdesc.format;
}
if (key.blend.enable)
{
@@ -959,12 +964,17 @@ id<MTLRenderPipelineState> Shader::getCachedRenderPipeline(const RenderPipelineK
auto dsformat = (PixelFormat) key.depthStencilFormat;
if (isPixelFormatDepthStencil(dsformat))
{
bool isSRGB = false;
auto formatdesc = Metal::convertPixelFormat(dsformat, isSRGB);
if (isPixelFormatDepth(dsformat))
desc.depthAttachmentPixelFormat = formatdesc.format;
if (isPixelFormatStencil(dsformat))
desc.stencilAttachmentPixelFormat = formatdesc.format;
if (@available(macOS 10.15, iOS 13, *))
{
// We already don't really support metal on older systems, this just
// silences a compiler warning about it.
bool isSRGB = false;
auto formatdesc = Metal::convertPixelFormat(dsformat, isSRGB);
if (isPixelFormatDepth(dsformat))
desc.depthAttachmentPixelFormat = formatdesc.format;
if (isPixelFormatStencil(dsformat))
desc.stencilAttachmentPixelFormat = formatdesc.format;
}
}
{
+11 -5
View File
@@ -52,17 +52,23 @@ Texture::Texture(love::graphics::Graphics *gfx, id<MTLDevice> device, const Sett
int w = pixelWidth;
int h = pixelHeight;
auto formatdesc = Metal::convertPixelFormat(format, sRGB);
desc.width = w;
desc.height = h;
desc.depth = depth;
desc.arrayLength = layers;
desc.mipmapLevelCount = mipmapCount;
desc.textureType = getMTLTextureType(texType, 1);
desc.pixelFormat = formatdesc.format;
if (formatdesc.swizzled)
desc.swizzle = formatdesc.swizzle;
if (@available(macOS 10.15, iOS 13, *))
{
// We already don't really support metal on older systems, this just
// silences a compiler warning about it.
auto formatdesc = Metal::convertPixelFormat(format, sRGB);
desc.pixelFormat = formatdesc.format;
if (formatdesc.swizzled)
desc.swizzle = formatdesc.swizzle;
}
else
throw love::Exception("Metal backend is only supported on macOS 10.15+ and iOS 13+.");
desc.storageMode = MTLStorageModePrivate;
if (readable)