diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp index c9ecf245..129aeae5 100644 --- a/src/d3d11/d3d11_context.cpp +++ b/src/d3d11/d3d11_context.cpp @@ -386,17 +386,15 @@ namespace dxvk { dstFormatInfo->aspectMask & srcFormatInfo->aspectMask, srcTextureInfo.image->info().mipLevels, SrcSubresource); - VkImageSubresourceLayers dstLayers; - dstLayers.aspectMask = dstSubresource.aspectMask; - dstLayers.mipLevel = dstSubresource.mipLevel; - dstLayers.baseArrayLayer = dstSubresource.arrayLayer; - dstLayers.layerCount = 1; + const VkImageSubresourceLayers dstLayers = { + dstSubresource.aspectMask, + dstSubresource.mipLevel, + dstSubresource.arrayLayer, 1 }; - VkImageSubresourceLayers srcLayers; - srcLayers.aspectMask = srcSubresource.aspectMask; - srcLayers.mipLevel = srcSubresource.mipLevel; - srcLayers.baseArrayLayer = srcSubresource.arrayLayer; - srcLayers.layerCount = 1; + const VkImageSubresourceLayers srcLayers = { + srcSubresource.aspectMask, + srcSubresource.mipLevel, + srcSubresource.arrayLayer, 1 }; m_context->copyImage( dstTextureInfo.image, dstLayers, dstOffset, @@ -725,14 +723,20 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11DeviceContext::DrawIndexedInstancedIndirect( ID3D11Buffer* pBufferForArgs, UINT AlignedByteOffsetForArgs) { - Logger::err("D3D11DeviceContext::DrawIndexedInstancedIndirect: Not implemented"); + static bool errorShown = false; + + if (!std::exchange(errorShown, true)) + Logger::err("D3D11DeviceContext::DrawIndexedInstancedIndirect: Not implemented"); } void STDMETHODCALLTYPE D3D11DeviceContext::DrawInstancedIndirect( ID3D11Buffer* pBufferForArgs, UINT AlignedByteOffsetForArgs) { - Logger::err("D3D11DeviceContext::DrawInstancedIndirect: Not implemented"); + static bool errorShown = false; + + if (!std::exchange(errorShown, true)) + Logger::err("D3D11DeviceContext::DrawInstancedIndirect: Not implemented"); } @@ -750,7 +754,10 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11DeviceContext::DispatchIndirect( ID3D11Buffer* pBufferForArgs, UINT AlignedByteOffsetForArgs) { - Logger::err("D3D11DeviceContext::DispatchIndirect: Not implemented"); + static bool errorShown = false; + + if (!std::exchange(errorShown, true)) + Logger::err("D3D11DeviceContext::DispatchIndirect: Not implemented"); } diff --git a/src/d3d11/d3d11_texture.h b/src/d3d11/d3d11_texture.h index bc0ab2eb..3d5e0e91 100644 --- a/src/d3d11/d3d11_texture.h +++ b/src/d3d11/d3d11_texture.h @@ -173,6 +173,14 @@ namespace dxvk { ID3D11Resource* pResource, D3D11TextureInfo* pTextureInfo); + /** + * \brief Computes image subresource from subresource index + * + * \param [in] Aspect Image aspect mask + * \param [in] MipLevels Total number of mip levels that the image has + * \param [in] Subresource The D3D11 subresource index + * \returns Vulkan image subresource info + */ VkImageSubresource GetSubresourceFromIndex( VkImageAspectFlags Aspect, UINT MipLevels,