summaryrefslogtreecommitdiffstats
path: root/src/video_core/guest_driver.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-01-03 21:16:29 +0100
committerFernandoS27 <fsahmkow27@gmail.com>2020-01-24 21:43:29 +0100
commitc921e496eb47de49a4d6ce62527581b966dca259 (patch)
tree788c71599f0abf53b479bd3f2f3ea730fc9c35c4 /src/video_core/guest_driver.h
parentMerge pull request #3273 from FernandoS27/txd-array (diff)
downloadyuzu-c921e496eb47de49a4d6ce62527581b966dca259.tar
yuzu-c921e496eb47de49a4d6ce62527581b966dca259.tar.gz
yuzu-c921e496eb47de49a4d6ce62527581b966dca259.tar.bz2
yuzu-c921e496eb47de49a4d6ce62527581b966dca259.tar.lz
yuzu-c921e496eb47de49a4d6ce62527581b966dca259.tar.xz
yuzu-c921e496eb47de49a4d6ce62527581b966dca259.tar.zst
yuzu-c921e496eb47de49a4d6ce62527581b966dca259.zip
Diffstat (limited to 'src/video_core/guest_driver.h')
-rw-r--r--src/video_core/guest_driver.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/video_core/guest_driver.h b/src/video_core/guest_driver.h
new file mode 100644
index 000000000..f64f043af
--- /dev/null
+++ b/src/video_core/guest_driver.h
@@ -0,0 +1,37 @@
+// Copyright 2019 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <vector>
+
+#include "common/common_types.h"
+
+namespace VideoCore {
+
+/**
+ * The GuestDriverProfile class is used to learn about the GPU drivers behavior and collect
+ * information necessary for impossible to avoid HLE methods like shader tracks.
+ */
+class GuestDriverProfile {
+public:
+ u32 GetTextureHandlerSize() const {
+ return texture_handler_size;
+ }
+
+ bool TextureHandlerSizeKnown() const {
+ return texture_handler_size_deduced;
+ }
+
+ void DeduceTextureHandlerSize(std::vector<u32>&& bound_offsets);
+
+private:
+ // This goes with Vulkan and OpenGL standards but Nvidia GPUs can easily
+ // use 4 bytes instead. Thus, certain drivers may squish the size.
+ static constexpr u32 default_texture_handler_size = 8;
+ u32 texture_handler_size{default_texture_handler_size};
+ bool texture_handler_size_deduced{};
+};
+
+} // namespace VideoCore