summaryrefslogtreecommitdiffstats
path: root/src/shader_recompiler/backend/glasm
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2023-01-29 19:42:34 +0100
committerameerj <52414509+ameerj@users.noreply.github.com>2023-01-29 19:42:34 +0100
commita1d8306bfdd24edd5c61761b79e72be32c5aaff4 (patch)
tree2eaf9fbf50db2a6f4d943dbcc4b190b41a80f139 /src/shader_recompiler/backend/glasm
parentemit_glsl_image: Implement TXQ with MSAA textures (diff)
downloadyuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.tar
yuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.tar.gz
yuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.tar.bz2
yuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.tar.lz
yuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.tar.xz
yuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.tar.zst
yuzu-a1d8306bfdd24edd5c61761b79e72be32c5aaff4.zip
Diffstat (limited to 'src/shader_recompiler/backend/glasm')
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_image.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_image.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_image.cpp
index b7bc11416..85ee27333 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_image.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_image.cpp
@@ -59,6 +59,13 @@ std::string Image(EmitContext& ctx, IR::TextureInstInfo info,
}
}
+bool IsTextureMsaa(EmitContext& ctx, const IR::TextureInstInfo& info) {
+ if (info.type == TextureType::Buffer) {
+ return false;
+ }
+ return ctx.info.texture_descriptors.at(info.descriptor_index).is_multisample;
+}
+
std::string_view TextureType(IR::TextureInstInfo info, bool is_ms = false) {
if (info.is_depth) {
switch (info.type) {
@@ -535,7 +542,8 @@ void EmitImageQueryDimensions(EmitContext& ctx, IR::Inst& inst, const IR::Value&
ScalarS32 lod, [[maybe_unused]] const IR::Value& skip_mips) {
const auto info{inst.Flags<IR::TextureInstInfo>()};
const std::string texture{Texture(ctx, info, index)};
- const std::string_view type{TextureType(info)};
+ const bool is_msaa{IsTextureMsaa(ctx, info)};
+ const std::string_view type{TextureType(info, is_msaa)};
ctx.Add("TXQ {},{},{},{};", inst, lod, texture, type);
}