aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/compatible_formats.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-01-04 01:56:44 -0300
committerReinUsesLisp <reinuseslisp@airmail.cc>2021-01-04 02:06:40 -0300
commit7d904fef2e6ac9ce8a3df71e758a36d39b8f69e5 (patch)
tree5bdc2bdcf8b5aeb594a3a2b16c183b13d6fe2771 /src/video_core/compatible_formats.cpp
parent3a49c1a691c7e97b2eea0dffd4c1e05b3296f58c (diff)
gl_texture_cache: Avoid format views on Intel and AMD
Intel and AMD proprietary drivers are incapable of rendering to texture views of different formats than the original texture. Avoid creating these at a cache level. This will consume more memory, emulating them with copies.
Diffstat (limited to 'src/video_core/compatible_formats.cpp')
-rw-r--r--src/video_core/compatible_formats.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/video_core/compatible_formats.cpp b/src/video_core/compatible_formats.cpp
index 1619d8664..acf2668dc 100644
--- a/src/video_core/compatible_formats.cpp
+++ b/src/video_core/compatible_formats.cpp
@@ -10,9 +10,7 @@
#include "video_core/surface.h"
namespace VideoCore::Surface {
-
namespace {
-
using Table = std::array<std::array<u64, 2>, MaxPixelFormat>;
// Compatibility table taken from Table 3.X.2 in:
@@ -233,10 +231,13 @@ constexpr Table MakeCopyTable() {
EnableRange(copy, COPY_CLASS_64_BITS);
return copy;
}
-
} // Anonymous namespace
-bool IsViewCompatible(PixelFormat format_a, PixelFormat format_b) {
+bool IsViewCompatible(PixelFormat format_a, PixelFormat format_b, bool broken_views) {
+ if (broken_views) {
+ // If format views are broken, only accept formats that are identical.
+ return format_a == format_b;
+ }
static constexpr Table TABLE = MakeViewTable();
return IsSupported(TABLE, format_a, format_b);
}