Răsfoiți Sursa

GPU: Added viewport registers to Maxwell3D's reg structure.

Subv 8 ani în urmă
părinte
comite
9b9de30086
1 a modificat fișierele cu 18 adăugiri și 1 ștergeri
  1. 18 1
      src/video_core/engines/maxwell_3d.h

+ 18 - 1
src/video_core/engines/maxwell_3d.h

@@ -33,6 +33,7 @@ public:
         static constexpr size_t NUM_REGS = 0xE36;
         static constexpr size_t NUM_REGS = 0xE36;
 
 
         static constexpr size_t NumRenderTargets = 8;
         static constexpr size_t NumRenderTargets = 8;
+        static constexpr size_t NumViewports = 16;
         static constexpr size_t NumCBData = 16;
         static constexpr size_t NumCBData = 16;
         static constexpr size_t NumVertexArrays = 32;
         static constexpr size_t NumVertexArrays = 32;
         static constexpr size_t NumVertexAttributes = 32;
         static constexpr size_t NumVertexAttributes = 32;
@@ -186,7 +187,22 @@ public:
                     }
                     }
                 } rt[NumRenderTargets];
                 } rt[NumRenderTargets];
 
 
-                INSERT_PADDING_WORDS(0xDD);
+                INSERT_PADDING_WORDS(0x80);
+
+                struct {
+                    union {
+                        BitField<0, 16, u32> x;
+                        BitField<16, 16, u32> width;
+                    };
+                    union {
+                        BitField<0, 16, u32> y;
+                        BitField<16, 16, u32> height;
+                    };
+                    float depth_range_near;
+                    float depth_range_far;
+                } viewport[NumViewports];
+
+                INSERT_PADDING_WORDS(0x1D);
 
 
                 struct {
                 struct {
                     u32 first;
                     u32 first;
@@ -462,6 +478,7 @@ private:
                   "Field " #field_name " has invalid position")
                   "Field " #field_name " has invalid position")
 
 
 ASSERT_REG_POSITION(rt, 0x200);
 ASSERT_REG_POSITION(rt, 0x200);
+ASSERT_REG_POSITION(viewport, 0x300);
 ASSERT_REG_POSITION(vertex_buffer, 0x35D);
 ASSERT_REG_POSITION(vertex_buffer, 0x35D);
 ASSERT_REG_POSITION(zeta, 0x3F8);
 ASSERT_REG_POSITION(zeta, 0x3F8);
 ASSERT_REG_POSITION(vertex_attrib_format[0], 0x458);
 ASSERT_REG_POSITION(vertex_attrib_format[0], 0x458);