diff --git a/src/modules/graphics/metal/Graphics.mm b/src/modules/graphics/metal/Graphics.mm index 0ffab0f86..1e34b194d 100644 --- a/src/modules/graphics/metal/Graphics.mm +++ b/src/modules/graphics/metal/Graphics.mm @@ -1001,7 +1001,7 @@ void Graphics::applyRenderState(id encoder, const Verte key.blend = state.blend; key.colorChannelMask = state.colorMask; - pipeline = shader->getCachedRenderPipeline(key); + pipeline = shader->getCachedRenderPipeline(this, key); } [encoder setRenderPipelineState:pipeline]; diff --git a/src/modules/graphics/metal/Shader.h b/src/modules/graphics/metal/Shader.h index 174902bfc..0913c5483 100644 --- a/src/modules/graphics/metal/Shader.h +++ b/src/modules/graphics/metal/Shader.h @@ -114,7 +114,7 @@ public: ptrdiff_t getHandle() const override { return 0; } void setVideoTextures(love::graphics::Texture *ytexture, love::graphics::Texture *cbtexture, love::graphics::Texture *crtexture) override; - id getCachedRenderPipeline(const RenderPipelineKey &key); + id getCachedRenderPipeline(Graphics *gfx, const RenderPipelineKey &key); id getComputePipeline() const { return computePipeline; } static int getUniformBufferBinding(); diff --git a/src/modules/graphics/metal/Shader.mm b/src/modules/graphics/metal/Shader.mm index 9bf1ec09c..1218039de 100644 --- a/src/modules/graphics/metal/Shader.mm +++ b/src/modules/graphics/metal/Shader.mm @@ -855,7 +855,7 @@ void Shader::setVideoTextures(love::graphics::Texture *ytexture, love::graphics: } } -id Shader::getCachedRenderPipeline(const RenderPipelineKey &key) +id Shader::getCachedRenderPipeline(graphics::Graphics *gfx, const RenderPipelineKey &key) { auto it = cachedRenderPipelines.find(key); @@ -882,7 +882,7 @@ id Shader::getCachedRenderPipeline(const RenderPipelineK auto formatdesc = Metal::convertPixelFormat(device, format); attachment.pixelFormat = formatdesc.format; - if (key.blend.enable) + if (key.blend.enable && gfx->isPixelFormatSupported(format, PIXELFORMATUSAGEFLAGS_BLEND)) { attachment.blendingEnabled = YES; attachment.sourceRGBBlendFactor = getMTLBlendFactor(key.blend.srcFactorRGB);