aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/texture_cache/texture_cache.h
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-11-09 03:26:30 -0300
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-11-14 20:57:10 -0300
commitc884dc8af2575868ce9f89cb4a0bef78bc475def (patch)
tree38f52e7744ba4db1aba6252837459b1ca72fa465 /src/video_core/texture_cache/texture_cache.h
parentc6afe254777a785e2d7a391fbe7ee0d48ccd7795 (diff)
texture_cache: Use a table instead of switch for texture formats
Use a large flat array to look up texture formats. This allows us to properly implement formats with different component types. It should also be faster.
Diffstat (limited to 'src/video_core/texture_cache/texture_cache.h')
-rw-r--r--src/video_core/texture_cache/texture_cache.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h
index 8074cc9454..41309ebeae 100644
--- a/src/video_core/texture_cache/texture_cache.h
+++ b/src/video_core/texture_cache/texture_cache.h
@@ -29,6 +29,7 @@
#include "video_core/rasterizer_interface.h"
#include "video_core/surface.h"
#include "video_core/texture_cache/copy_params.h"
+#include "video_core/texture_cache/format_lookup_table.h"
#include "video_core/texture_cache/surface_base.h"
#include "video_core/texture_cache/surface_params.h"
#include "video_core/texture_cache/surface_view.h"
@@ -96,7 +97,7 @@ public:
if (!gpu_addr) {
return {};
}
- const auto params{SurfaceParams::CreateForTexture(tic, entry)};
+ const auto params{SurfaceParams::CreateForTexture(format_lookup_table, tic, entry)};
const auto [surface, view] = GetSurface(gpu_addr, params, true, false);
if (guard_samplers) {
sampled_textures.push_back(surface);
@@ -111,7 +112,7 @@ public:
if (!gpu_addr) {
return {};
}
- const auto params{SurfaceParams::CreateForImage(tic, entry)};
+ const auto params{SurfaceParams::CreateForImage(format_lookup_table, tic, entry)};
const auto [surface, view] = GetSurface(gpu_addr, params, true, false);
if (guard_samplers) {
sampled_textures.push_back(surface);
@@ -953,6 +954,8 @@ private:
VideoCore::RasterizerInterface& rasterizer;
+ FormatLookupTable format_lookup_table;
+
u64 ticks{};
// Guards the cache for protection conflicts.