1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +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[2] = ColorRGBA[2];
clearValue.color.float32[3] = ColorRGBA[3]; 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([ EmitCs([
cClearValue = clearValue, cClearValue = clearValue,
cClearRect = clearRect,
cImageView = view cImageView = view
] (DxvkContext* ctx) { ] (DxvkContext* ctx) {
ctx->clearRenderTarget( ctx->clearRenderTarget(
cImageView, cClearRect, cImageView,
VK_IMAGE_ASPECT_COLOR_BIT, VK_IMAGE_ASPECT_COLOR_BIT,
cClearValue); cClearValue);
}); });
@ -781,26 +769,15 @@ namespace dxvk {
clearValue.depthStencil.depth = Depth; clearValue.depthStencil.depth = Depth;
clearValue.depthStencil.stencil = Stencil; 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([ EmitCs([
cClearValue = clearValue, cClearValue = clearValue,
cClearRect = clearRect,
cAspectMask = aspectMask, cAspectMask = aspectMask,
cImageView = view cImageView = view
] (DxvkContext* ctx) { ] (DxvkContext* ctx) {
ctx->clearRenderTarget( ctx->clearRenderTarget(
cImageView, cClearRect, cImageView,
cAspectMask, cClearValue); cAspectMask,
cClearValue);
}); });
} }

View File

@ -414,7 +414,6 @@ namespace dxvk {
void DxvkContext::clearRenderTarget( void DxvkContext::clearRenderTarget(
const Rc<DxvkImageView>& imageView, const Rc<DxvkImageView>& imageView,
const VkClearRect& clearRect,
VkImageAspectFlags clearAspects, VkImageAspectFlags clearAspects,
const VkClearValue& clearValue) { const VkClearValue& clearValue) {
this->updateFramebuffer(); this->updateFramebuffer();
@ -486,6 +485,14 @@ namespace dxvk {
clearInfo.colorAttachment = attachmentIndex; clearInfo.colorAttachment = attachmentIndex;
clearInfo.clearValue = clearValue; 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( m_cmd->cmdClearAttachments(
1, &clearInfo, 1, &clearRect); 1, &clearInfo, 1, &clearRect);
} else { } else {
@ -1681,7 +1688,7 @@ namespace dxvk {
m_flags.clr(DxvkContextFlag::GpClearRenderTargets); m_flags.clr(DxvkContextFlag::GpClearRenderTargets);
m_barriers.recordCommands(m_cmd); m_barriers.recordCommands(m_cmd);
this->renderPassBindFramebuffer( this->renderPassBindFramebuffer(
m_state.om.framebuffer, m_state.om.framebuffer,
m_state.om.renderPassOps, m_state.om.renderPassOps,

View File

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