diff options
| author | 2023-06-15 18:19:32 +0200 | |
|---|---|---|
| committer | 2023-06-15 18:19:32 +0200 | |
| commit | 42c944b250d8d5c8147b24b3a453cba29968d46c (patch) | |
| tree | 6d156e8247219bf373edd848bd3a89bbd32eb546 /src/video_core/texture_cache | |
| parent | video_core: Apply AF only to samplers with normal LOD range [0, 1+x] (diff) | |
| download | yuzu-42c944b250d8d5c8147b24b3a453cba29968d46c.tar.gz yuzu-42c944b250d8d5c8147b24b3a453cba29968d46c.tar.xz yuzu-42c944b250d8d5c8147b24b3a453cba29968d46c.zip | |
video_core: Add per-image anisotropy heuristics (format & mip count)
Diffstat (limited to 'src/video_core/texture_cache')
| -rw-r--r-- | src/video_core/texture_cache/image_view_base.cpp | 39 | ||||
| -rw-r--r-- | src/video_core/texture_cache/image_view_base.h | 2 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/video_core/texture_cache/image_view_base.cpp b/src/video_core/texture_cache/image_view_base.cpp index d134b6738..26fa6d63e 100644 --- a/src/video_core/texture_cache/image_view_base.cpp +++ b/src/video_core/texture_cache/image_view_base.cpp | |||
| @@ -45,4 +45,43 @@ ImageViewBase::ImageViewBase(const ImageInfo& info, const ImageViewInfo& view_in | |||
| 45 | 45 | ||
| 46 | ImageViewBase::ImageViewBase(const NullImageViewParams&) : image_id{NULL_IMAGE_ID} {} | 46 | ImageViewBase::ImageViewBase(const NullImageViewParams&) : image_id{NULL_IMAGE_ID} {} |
| 47 | 47 | ||
| 48 | bool ImageViewBase::SupportsAnisotropy() const noexcept { | ||
| 49 | using namespace VideoCommon; | ||
| 50 | switch (format) { | ||
| 51 | case PixelFormat::R8_UNORM: | ||
| 52 | case PixelFormat::R8_SNORM: | ||
| 53 | case PixelFormat::R8_SINT: | ||
| 54 | case PixelFormat::R8_UINT: | ||
| 55 | case PixelFormat::BC4_UNORM: | ||
| 56 | case PixelFormat::BC4_SNORM: | ||
| 57 | case PixelFormat::BC5_UNORM: | ||
| 58 | case PixelFormat::BC5_SNORM: | ||
| 59 | case PixelFormat::R32G32_FLOAT: | ||
| 60 | case PixelFormat::R32G32_SINT: | ||
| 61 | case PixelFormat::R32_FLOAT: | ||
| 62 | case PixelFormat::R16_FLOAT: | ||
| 63 | case PixelFormat::R16_UNORM: | ||
| 64 | case PixelFormat::R16_SNORM: | ||
| 65 | case PixelFormat::R16_UINT: | ||
| 66 | case PixelFormat::R16_SINT: | ||
| 67 | case PixelFormat::R16G16_UNORM: | ||
| 68 | case PixelFormat::R16G16_FLOAT: | ||
| 69 | case PixelFormat::R16G16_UINT: | ||
| 70 | case PixelFormat::R16G16_SINT: | ||
| 71 | case PixelFormat::R16G16_SNORM: | ||
| 72 | case PixelFormat::R8G8_UNORM: | ||
| 73 | case PixelFormat::R8G8_SNORM: | ||
| 74 | case PixelFormat::R8G8_SINT: | ||
| 75 | case PixelFormat::R8G8_UINT: | ||
| 76 | case PixelFormat::R32G32_UINT: | ||
| 77 | case PixelFormat::R32_UINT: | ||
| 78 | case PixelFormat::R32_SINT: | ||
| 79 | case PixelFormat::G4R4_UNORM: | ||
| 80 | return false; | ||
| 81 | default: | ||
| 82 | break; | ||
| 83 | } | ||
| 84 | return range.extent.levels > 1; | ||
| 85 | } | ||
| 86 | |||
| 48 | } // namespace VideoCommon | 87 | } // namespace VideoCommon |
diff --git a/src/video_core/texture_cache/image_view_base.h b/src/video_core/texture_cache/image_view_base.h index a25ae1d4a..87549ffff 100644 --- a/src/video_core/texture_cache/image_view_base.h +++ b/src/video_core/texture_cache/image_view_base.h | |||
| @@ -33,6 +33,8 @@ struct ImageViewBase { | |||
| 33 | return type == ImageViewType::Buffer; | 33 | return type == ImageViewType::Buffer; |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | [[nodiscard]] bool SupportsAnisotropy() const noexcept; | ||
| 37 | |||
| 36 | ImageId image_id{}; | 38 | ImageId image_id{}; |
| 37 | GPUVAddr gpu_addr = 0; | 39 | GPUVAddr gpu_addr = 0; |
| 38 | PixelFormat format{}; | 40 | PixelFormat format{}; |