Преглед изворни кода

shader_bytecode: Add AL2P decoding

ReinUsesLisp пре 7 година
родитељ
комит
7632a7d6d2
1 измењених фајлова са 15 додато и 2 уклоњено
  1. 15 2
      src/video_core/engines/shader_bytecode.h

+ 15 - 2
src/video_core/engines/shader_bytecode.h

@@ -499,6 +499,11 @@ enum class SystemVariable : u64 {
     CircularQueueEntryAddressHigh = 0x63,
     CircularQueueEntryAddressHigh = 0x63,
 };
 };
 
 
+enum class PhysicalAttributeDirection : u64 {
+    Input = 0,
+    Output = 1,
+};
+
 union Instruction {
 union Instruction {
     Instruction& operator=(const Instruction& instr) {
     Instruction& operator=(const Instruction& instr) {
         value = instr.value;
         value = instr.value;
@@ -811,6 +816,12 @@ union Instruction {
         BitField<20, 24, s64> immediate_offset;
         BitField<20, 24, s64> immediate_offset;
     } stg;
     } stg;
 
 
+    union {
+        BitField<32, 1, PhysicalAttributeDirection> direction;
+        BitField<47, 3, AttributeSize> size;
+        BitField<20, 11, u64> address;
+    } al2p;
+
     union {
     union {
         BitField<0, 3, u64> pred0;
         BitField<0, 3, u64> pred0;
         BitField<3, 3, u64> pred3;
         BitField<3, 3, u64> pred3;
@@ -1374,8 +1385,9 @@ public:
         ST_A,
         ST_A,
         ST_L,
         ST_L,
         ST_S,
         ST_S,
-        LDG, // Load from global memory
-        STG, // Store in global memory
+        LDG,  // Load from global memory
+        STG,  // Store in global memory
+        AL2P, // Transforms attribute memory into physical memory
         TEX,
         TEX,
         TEX_B,  // Texture Load Bindless
         TEX_B,  // Texture Load Bindless
         TXQ,    // Texture Query
         TXQ,    // Texture Query
@@ -1646,6 +1658,7 @@ private:
             INST("1110111101010---", Id::ST_L, Type::Memory, "ST_L"),
             INST("1110111101010---", Id::ST_L, Type::Memory, "ST_L"),
             INST("1110111011010---", Id::LDG, Type::Memory, "LDG"),
             INST("1110111011010---", Id::LDG, Type::Memory, "LDG"),
             INST("1110111011011---", Id::STG, Type::Memory, "STG"),
             INST("1110111011011---", Id::STG, Type::Memory, "STG"),
+            INST("1110111110100---", Id::AL2P, Type::Memory, "AL2P"),
             INST("110000----111---", Id::TEX, Type::Texture, "TEX"),
             INST("110000----111---", Id::TEX, Type::Texture, "TEX"),
             INST("1101111010111---", Id::TEX_B, Type::Texture, "TEX_B"),
             INST("1101111010111---", Id::TEX_B, Type::Texture, "TEX_B"),
             INST("1101111101001---", Id::TXQ, Type::Texture, "TXQ"),
             INST("1101111101001---", Id::TXQ, Type::Texture, "TXQ"),