From 7cd46e72e91cb58d0bf721dd48d3ff5ef17e9c74 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Wed, 27 May 2020 09:08:23 +0100 Subject: [PATCH] [dxvk] Add filter type to generateMipmaps --- src/d3d11/d3d11_context.cpp | 2 +- src/d3d9/d3d9_device.cpp | 2 +- src/dxvk/dxvk_context.cpp | 5 +++-- src/dxvk/dxvk_context.h | 4 +++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp index ac30c61a8..fbd9dd614 100644 --- a/src/d3d11/d3d11_context.cpp +++ b/src/d3d11/d3d11_context.cpp @@ -1105,7 +1105,7 @@ namespace dxvk { EmitCs([cDstImageView = view->GetImageView()] (DxvkContext* ctx) { - ctx->generateMipmaps(cDstImageView); + ctx->generateMipmaps(cDstImageView, VK_FILTER_LINEAR); }); } diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index d12477fd8..ada49fb1d 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -4209,7 +4209,7 @@ namespace dxvk { EmitCs([ cImageView = pResource->GetSampleView(false) ] (DxvkContext* ctx) { - ctx->generateMipmaps(cImageView); + ctx->generateMipmaps(cImageView, VK_FILTER_LINEAR); }); } diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 935dc68c0..3f8b98185 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -1427,7 +1427,8 @@ namespace dxvk { void DxvkContext::generateMipmaps( - const Rc& imageView) { + const Rc& imageView, + VkFilter filter) { if (imageView->info().numLevels <= 1) return; @@ -1442,7 +1443,7 @@ namespace dxvk { // Common descriptor set properties that we use to // bind the source image view to the fragment shader VkDescriptorImageInfo descriptorImage; - descriptorImage.sampler = m_common->metaBlit().getSampler(VK_FILTER_LINEAR); + descriptorImage.sampler = m_common->metaBlit().getSampler(filter); descriptorImage.imageView = VK_NULL_HANDLE; descriptorImage.imageLayout = imageView->imageInfo().layout; diff --git a/src/dxvk/dxvk_context.h b/src/dxvk/dxvk_context.h index 7a8c8e2a8..dec399b06 100644 --- a/src/dxvk/dxvk_context.h +++ b/src/dxvk/dxvk_context.h @@ -624,9 +624,11 @@ namespace dxvk { * Uses blitting to generate lower mip levels from * the top-most mip level passed to this method. * \param [in] imageView The image to generate mips for + * \param [in] filter The filter to use for generation */ void generateMipmaps( - const Rc& imageView); + const Rc& imageView, + VkFilter filter); /** * \brief Initializes or invalidates an image