metal: don't try to enable blending with integer canvases.

This commit is contained in:
Sasha Szpakowski
2024-08-14 19:15:23 -03:00
parent 8e2fc44a65
commit 9d5828a62f
3 changed files with 4 additions and 4 deletions
+1 -1
View File
@@ -1001,7 +1001,7 @@ void Graphics::applyRenderState(id<MTLRenderCommandEncoder> encoder, const Verte
key.blend = state.blend;
key.colorChannelMask = state.colorMask;
pipeline = shader->getCachedRenderPipeline(key);
pipeline = shader->getCachedRenderPipeline(this, key);
}
[encoder setRenderPipelineState:pipeline];
+1 -1
View File
@@ -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<MTLRenderPipelineState> getCachedRenderPipeline(const RenderPipelineKey &key);
id<MTLRenderPipelineState> getCachedRenderPipeline(Graphics *gfx, const RenderPipelineKey &key);
id<MTLComputePipelineState> getComputePipeline() const { return computePipeline; }
static int getUniformBufferBinding();
+2 -2
View File
@@ -855,7 +855,7 @@ void Shader::setVideoTextures(love::graphics::Texture *ytexture, love::graphics:
}
}
id<MTLRenderPipelineState> Shader::getCachedRenderPipeline(const RenderPipelineKey &key)
id<MTLRenderPipelineState> Shader::getCachedRenderPipeline(graphics::Graphics *gfx, const RenderPipelineKey &key)
{
auto it = cachedRenderPipelines.find(key);
@@ -882,7 +882,7 @@ id<MTLRenderPipelineState> 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);