blob: c90ed447b942e19de130768a159d0d9dc85c4bd7 [file] [log] [blame]
/*
* Copyright © 2023 Valve Corporation
*
* SPDX-License-Identifier: MIT
*/
#include "radv_cmd_buffer.h"
#include "radv_device.h"
#include "radv_entrypoints.h"
#include "vk_framebuffer.h"
VKAPI_ATTR void VKAPI_CALL
rage2_CmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo *pRenderPassBegin,
VkSubpassContents contents)
{
VK_FROM_HANDLE(vk_framebuffer, framebuffer, pRenderPassBegin->framebuffer);
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
VkRenderPassBeginInfo render_pass_begin = {
.sType = pRenderPassBegin->sType,
.pNext = pRenderPassBegin->pNext,
.renderPass = pRenderPassBegin->renderPass,
.framebuffer = pRenderPassBegin->framebuffer,
.clearValueCount = pRenderPassBegin->clearValueCount,
.pClearValues = pRenderPassBegin->pClearValues,
};
/* RAGE2 seems to incorrectly set the render area and with dynamic rendering the concept of
* framebuffer dimensions goes away. Forcing the render area to be the framebuffer dimensions
* restores previous logic and it fixes rendering issues.
*/
render_pass_begin.renderArea.offset.x = 0;
render_pass_begin.renderArea.offset.y = 0;
render_pass_begin.renderArea.extent.width = framebuffer->width;
render_pass_begin.renderArea.extent.height = framebuffer->height;
device->layer_dispatch.app.CmdBeginRenderPass(commandBuffer, &render_pass_begin, contents);
}