aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-04-22 16:17:59 -0300
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-22 21:51:28 -0400
commitd10cf55353175b13bed4cf18791e080ecb7fd95b (patch)
tree9e26b823d7b48f532914a0511a157c14806debf5 /src/shader_recompiler/frontend
parent7a9dc7839876fe5b24d1c841f182e01108ba676e (diff)
shader: Implement indexed textures
Diffstat (limited to 'src/shader_recompiler/frontend')
-rw-r--r--src/shader_recompiler/frontend/ir/modifiers.h17
-rw-r--r--src/shader_recompiler/frontend/ir/opcodes.inc24
2 files changed, 21 insertions, 20 deletions
diff --git a/src/shader_recompiler/frontend/ir/modifiers.h b/src/shader_recompiler/frontend/ir/modifiers.h
index 5d7efa14cc..77cda1f8a2 100644
--- a/src/shader_recompiler/frontend/ir/modifiers.h
+++ b/src/shader_recompiler/frontend/ir/modifiers.h
@@ -34,14 +34,15 @@ static_assert(sizeof(FpControl) <= sizeof(u32));
union TextureInstInfo {
u32 raw;
- BitField<0, 8, TextureType> type;
- BitField<8, 1, u32> is_depth;
- BitField<9, 1, u32> has_bias;
- BitField<10, 1, u32> has_lod_clamp;
- BitField<11, 1, u32> relaxed_precision;
- BitField<12, 2, u32> gather_component;
- BitField<14, 2, u32> num_derivates;
- BitField<16, 3, ImageFormat> image_format;
+ BitField<0, 16, u32> descriptor_index;
+ BitField<16, 3, TextureType> type;
+ BitField<19, 1, u32> is_depth;
+ BitField<20, 1, u32> has_bias;
+ BitField<21, 1, u32> has_lod_clamp;
+ BitField<22, 1, u32> relaxed_precision;
+ BitField<23, 2, u32> gather_component;
+ BitField<25, 2, u32> num_derivates;
+ BitField<27, 3, ImageFormat> image_format;
};
static_assert(sizeof(TextureInstInfo) <= sizeof(u32));
diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc
index b6869d4e46..8f32c9e74b 100644
--- a/src/shader_recompiler/frontend/ir/opcodes.inc
+++ b/src/shader_recompiler/frontend/ir/opcodes.inc
@@ -482,18 +482,18 @@ OPCODE(BoundImageGradient, F32x4, U32,
OPCODE(BoundImageRead, U32x4, U32, Opaque, )
OPCODE(BoundImageWrite, Void, U32, Opaque, U32x4, )
-OPCODE(ImageSampleImplicitLod, F32x4, U32, Opaque, Opaque, Opaque, )
-OPCODE(ImageSampleExplicitLod, F32x4, U32, Opaque, Opaque, Opaque, )
-OPCODE(ImageSampleDrefImplicitLod, F32, U32, Opaque, F32, Opaque, Opaque, )
-OPCODE(ImageSampleDrefExplicitLod, F32, U32, Opaque, F32, Opaque, Opaque, )
-OPCODE(ImageGather, F32x4, U32, Opaque, Opaque, Opaque, )
-OPCODE(ImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, )
-OPCODE(ImageFetch, F32x4, U32, Opaque, Opaque, U32, Opaque, )
-OPCODE(ImageQueryDimensions, U32x4, U32, U32, )
-OPCODE(ImageQueryLod, F32x4, U32, Opaque, )
-OPCODE(ImageGradient, F32x4, U32, Opaque, Opaque, Opaque, Opaque, )
-OPCODE(ImageRead, U32x4, U32, Opaque, )
-OPCODE(ImageWrite, Void, U32, Opaque, U32x4, )
+OPCODE(ImageSampleImplicitLod, F32x4, Opaque, Opaque, Opaque, Opaque, )
+OPCODE(ImageSampleExplicitLod, F32x4, Opaque, Opaque, Opaque, Opaque, )
+OPCODE(ImageSampleDrefImplicitLod, F32, Opaque, Opaque, F32, Opaque, Opaque, )
+OPCODE(ImageSampleDrefExplicitLod, F32, Opaque, Opaque, F32, Opaque, Opaque, )
+OPCODE(ImageGather, F32x4, Opaque, Opaque, Opaque, Opaque, )
+OPCODE(ImageGatherDref, F32x4, Opaque, Opaque, Opaque, Opaque, F32, )
+OPCODE(ImageFetch, F32x4, Opaque, Opaque, Opaque, U32, Opaque, )
+OPCODE(ImageQueryDimensions, U32x4, Opaque, U32, )
+OPCODE(ImageQueryLod, F32x4, Opaque, Opaque, )
+OPCODE(ImageGradient, F32x4, Opaque, Opaque, Opaque, Opaque, Opaque, )
+OPCODE(ImageRead, U32x4, Opaque, Opaque, )
+OPCODE(ImageWrite, Void, Opaque, Opaque, U32x4, )
// Warp operations
OPCODE(LaneId, U32, )