Просмотр исходного кода

GPU: Added the TSC structure. It contains information about the sampler.

Subv 8 лет назад
Родитель
Сommit
56e2013c1f
1 измененных файлов с 50 добавлено и 0 удалено
  1. 50 0
      src/video_core/textures/texture.h

+ 50 - 0
src/video_core/textures/texture.h

@@ -80,6 +80,56 @@ struct TICEntry {
 };
 static_assert(sizeof(TICEntry) == 0x20, "TICEntry has wrong size");
 
+enum class WrapMode : u32 {
+    Wrap = 0,
+    Mirror = 1,
+    ClampToEdge = 2,
+    Border = 3,
+    ClampOGL = 4,
+    MirrorOnceClampToEdge = 5,
+    MirrorOnceBorder = 6,
+    MirrorOnceClampOGL = 7,
+};
+
+enum class TextureFilter : u32 {
+    Nearest = 1,
+    Linear = 2,
+};
+
+enum class TextureMipmapFilter : u32 {
+    None = 1,
+    Nearest = 2,
+    Linear = 3,
+};
+
+struct TSCEntry {
+    union {
+        BitField<0, 3, WrapMode> wrap_u;
+        BitField<3, 3, WrapMode> wrap_v;
+        BitField<6, 3, WrapMode> wrap_p;
+        BitField<9, 1, u32> depth_compare_enabled;
+        BitField<10, 3, u32> depth_compare_func;
+    };
+    union {
+        BitField<0, 2, TextureFilter> mag_filter;
+        BitField<4, 2, TextureFilter> min_filter;
+        BitField<6, 2, TextureMipmapFilter> mip_filter;
+    };
+    INSERT_PADDING_BYTES(8);
+    u32 border_color_r;
+    u32 border_color_g;
+    u32 border_color_b;
+    u32 border_color_a;
+};
+static_assert(sizeof(TSCEntry) == 0x20, "TSCEntry has wrong size");
+
+struct FullTextureInfo {
+    u32 index;
+    TICEntry tic;
+    TSCEntry tsc;
+    bool enabled;
+};
+
 /// Returns the number of bytes per pixel of the input texture format.
 u32 BytesPerPixel(TextureFormat format);