From 86d5310736904c9be4696efe4b1f64bf841e1b7b Mon Sep 17 00:00:00 2001 From: Chip Davis Date: Thu, 24 Sep 2020 15:37:05 -0500 Subject: [PATCH] Ensure there is at least one pixel in the render area. If there are no attachments and `renderTargetWidth` and `renderTargetHeight` are zero, the Metal validation layer complains. To prevent this, ensure both are at least 1. --- MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm index 08895779..7d619b58 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm @@ -338,8 +338,8 @@ void MVKCommandEncoder::beginMetalRenderPass(bool loadOverride) { mtlRPDesc.visibilityResultBuffer = _occlusionQueryState.getVisibilityResultMTLBuffer(); VkExtent2D fbExtent = _framebuffer->getExtent2D(); - mtlRPDesc.renderTargetWidthMVK = min(_renderArea.offset.x + _renderArea.extent.width, fbExtent.width); - mtlRPDesc.renderTargetHeightMVK = min(_renderArea.offset.y + _renderArea.extent.height, fbExtent.height); + mtlRPDesc.renderTargetWidthMVK = max(min(_renderArea.offset.x + _renderArea.extent.width, fbExtent.width), 1u); + mtlRPDesc.renderTargetHeightMVK = max(min(_renderArea.offset.y + _renderArea.extent.height, fbExtent.height), 1u); if (_canUseLayeredRendering) { if (getSubpass()->isMultiview()) { // In the case of a multiview pass, the framebuffer layer count will be one.