Merge pull request #1061 from cdavis5e/clear-atts-render-area

MVKCmdClearAttachments: Account for the renderArea.
This commit is contained in:
Bill Hollings 2020-09-23 08:05:48 -04:00 committed by GitHub
commit 7394860d92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1130,6 +1130,15 @@ void MVKCmdClearAttachments<N>::encode(MVKCommandEncoder* cmdEncoder) {
simd::float4 clearColors[kMVKClearAttachmentCount];
VkExtent2D fbExtent = cmdEncoder->_framebuffer->getExtent2D();
// I need to know if the 'renderTargetWidth' and 'renderTargetHeight' properties
// actually do something, but [MTLRenderPassDescriptor instancesRespondToSelector: @selector(renderTargetWidth)]
// returns NO even on systems that do support it. So we have to check an actual instance.
MTLRenderPassDescriptor* tempRPDesc = [MTLRenderPassDescriptor new]; // temp retain
if ([tempRPDesc respondsToSelector: @selector(renderTargetWidth)]) {
VkRect2D renderArea = cmdEncoder->clipToRenderArea({{0, 0}, fbExtent});
fbExtent = {renderArea.offset.x + renderArea.extent.width, renderArea.offset.y + renderArea.extent.height};
}
[tempRPDesc release]; // temp release
populateVertices(cmdEncoder, vertices, fbExtent.width, fbExtent.height);
MVKPixelFormats* pixFmts = cmdEncoder->getPixelFormats();