1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-20 01:54:16 +01:00

[dxvk] Remove clear rect parameter from clearRenderTarget

With deferred clears and render target-based clears, this was
not properly supported anyway.
This commit is contained in:
Philip Rebohle 2018-07-06 15:01:37 +02:00
parent 04d7f2896a
commit 974db9712b
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
3 changed files with 13 additions and 31 deletions

View File

@ -598,24 +598,12 @@ namespace dxvk {
clearValue.color.float32[2] = ColorRGBA[2];
clearValue.color.float32[3] = ColorRGBA[3];
VkClearRect clearRect;
clearRect.rect.offset.x = 0;
clearRect.rect.offset.y = 0;
clearRect.rect.extent.width = view->mipLevelExtent(0).width;
clearRect.rect.extent.height = view->mipLevelExtent(0).height;
clearRect.baseArrayLayer = 0;
clearRect.layerCount = view->info().numLayers;
if (m_parent->GetFeatureLevel() < D3D_FEATURE_LEVEL_10_0)
clearRect.layerCount = 1;
EmitCs([
cClearValue = clearValue,
cClearRect = clearRect,
cImageView = view
] (DxvkContext* ctx) {
ctx->clearRenderTarget(
cImageView, cClearRect,
cImageView,
VK_IMAGE_ASPECT_COLOR_BIT,
cClearValue);
});
@ -781,26 +769,15 @@ namespace dxvk {
clearValue.depthStencil.depth = Depth;
clearValue.depthStencil.stencil = Stencil;
VkClearRect clearRect;
clearRect.rect.offset.x = 0;
clearRect.rect.offset.y = 0;
clearRect.rect.extent.width = view->mipLevelExtent(0).width;
clearRect.rect.extent.height = view->mipLevelExtent(0).height;
clearRect.baseArrayLayer = 0;
clearRect.layerCount = view->info().numLayers;
if (m_parent->GetFeatureLevel() < D3D_FEATURE_LEVEL_10_0)
clearRect.layerCount = 1;
EmitCs([
cClearValue = clearValue,
cClearRect = clearRect,
cAspectMask = aspectMask,
cImageView = view
] (DxvkContext* ctx) {
ctx->clearRenderTarget(
cImageView, cClearRect,
cAspectMask, cClearValue);
cImageView,
cAspectMask,
cClearValue);
});
}

View File

@ -414,7 +414,6 @@ namespace dxvk {
void DxvkContext::clearRenderTarget(
const Rc<DxvkImageView>& imageView,
const VkClearRect& clearRect,
VkImageAspectFlags clearAspects,
const VkClearValue& clearValue) {
this->updateFramebuffer();
@ -486,6 +485,14 @@ namespace dxvk {
clearInfo.colorAttachment = attachmentIndex;
clearInfo.clearValue = clearValue;
VkClearRect clearRect;
clearRect.rect.offset.x = 0;
clearRect.rect.offset.y = 0;
clearRect.rect.extent.width = imageView->mipLevelExtent(0).width;
clearRect.rect.extent.height = imageView->mipLevelExtent(0).height;
clearRect.baseArrayLayer = 0;
clearRect.layerCount = imageView->info().numLayers;
m_cmd->cmdClearAttachments(
1, &clearInfo, 1, &clearRect);
} else {
@ -1681,7 +1688,7 @@ namespace dxvk {
m_flags.clr(DxvkContextFlag::GpClearRenderTargets);
m_barriers.recordCommands(m_cmd);
this->renderPassBindFramebuffer(
m_state.om.framebuffer,
m_state.om.renderPassOps,

View File

@ -221,13 +221,11 @@ namespace dxvk {
* \brief Clears an active render target
*
* \param [in] imageView Render target view to clear
* \param [in] clearArea Image area to clear
* \param [in] clearAspects Image aspects to clear
* \param [in] clearValue The clear value
*/
void clearRenderTarget(
const Rc<DxvkImageView>& imageView,
const VkClearRect& clearRect,
VkImageAspectFlags clearAspects,
const VkClearValue& clearValue);