From beedd39f7d7ecdc8896c31dab364eab0f8bd66a2 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 15 Aug 2018 18:06:52 +0200 Subject: [PATCH] [dxvk] Accept VkClearValue in DxvkContext::clearImageView --- src/d3d11/d3d11_context.cpp | 26 ++++++++++++++------------ src/dxvk/dxvk_context.cpp | 4 ++-- src/dxvk/dxvk_context.h | 2 +- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp index 5739845e..d6217652 100644 --- a/src/d3d11/d3d11_context.cpp +++ b/src/d3d11/d3d11_context.cpp @@ -651,11 +651,11 @@ namespace dxvk { } // Set up clear color struct - VkClearColorValue clearValue; - clearValue.uint32[0] = Values[0]; - clearValue.uint32[1] = Values[1]; - clearValue.uint32[2] = Values[2]; - clearValue.uint32[3] = Values[3]; + VkClearValue clearValue; + clearValue.color.uint32[0] = Values[0]; + clearValue.color.uint32[1] = Values[1]; + clearValue.color.uint32[2] = Values[2]; + clearValue.color.uint32[3] = Values[3]; if (uav->GetResourceType() == D3D11_RESOURCE_DIMENSION_BUFFER) { // In case of raw and structured buffers as well as typed @@ -693,7 +693,7 @@ namespace dxvk { ctx->clearBufferView( cDstView, 0, cDstView->elementCount(), - cClearValue); + cClearValue.color); }); } } else { @@ -729,11 +729,11 @@ namespace dxvk { if (uav == nullptr) return; - VkClearColorValue clearValue; - clearValue.float32[0] = Values[0]; - clearValue.float32[1] = Values[1]; - clearValue.float32[2] = Values[2]; - clearValue.float32[3] = Values[3]; + VkClearValue clearValue; + clearValue.color.float32[0] = Values[0]; + clearValue.color.float32[1] = Values[1]; + clearValue.color.float32[2] = Values[2]; + clearValue.color.float32[3] = Values[3]; if (uav->GetResourceType() == D3D11_RESOURCE_DIMENSION_BUFFER) { EmitCs([ @@ -743,7 +743,7 @@ namespace dxvk { ctx->clearBufferView( cDstView, 0, cDstView->elementCount(), - cClearValue); + cClearValue.color); }); } else { EmitCs([ @@ -799,6 +799,7 @@ namespace dxvk { }); } + void STDMETHODCALLTYPE D3D11DeviceContext::ClearView( ID3D11View* pView, const FLOAT Color[4], @@ -807,6 +808,7 @@ namespace dxvk { Logger::err("D3D11DeviceContext::ClearView: not implemented"); } + void STDMETHODCALLTYPE D3D11DeviceContext::GenerateMips(ID3D11ShaderResourceView* pShaderResourceView) { auto view = static_cast(pShaderResourceView); diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index a5e2ab98..24f551c1 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -531,7 +531,7 @@ namespace dxvk { const Rc& imageView, VkOffset3D offset, VkExtent3D extent, - VkClearColorValue value) { + VkClearValue value) { this->spillRenderPass(); this->unbindComputePipeline(); @@ -565,7 +565,7 @@ namespace dxvk { // Prepare shader arguments DxvkMetaClearArgs pushArgs; - pushArgs.clearValue = value; + pushArgs.clearValue = value.color; pushArgs.offset = offset; pushArgs.extent = extent; diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h index 35735957..120be5e9 100644 --- a/src/dxvk/dxvk_context.h +++ b/src/dxvk/dxvk_context.h @@ -244,7 +244,7 @@ namespace dxvk { const Rc& imageView, VkOffset3D offset, VkExtent3D extent, - VkClearColorValue value); + VkClearValue value); /** * \brief Copies data from one buffer to another