summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv_image.cpp')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_image.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
index 310cc7af7..2cd6b38c4 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
@@ -161,6 +161,10 @@ Id EmitBindlessImageQueryDimensions(EmitContext&) {
161 throw LogicError("Unreachable instruction"); 161 throw LogicError("Unreachable instruction");
162} 162}
163 163
164Id EmitBindlessImageQueryLod(EmitContext&) {
165 throw LogicError("Unreachable instruction");
166}
167
164Id EmitBoundImageSampleImplicitLod(EmitContext&) { 168Id EmitBoundImageSampleImplicitLod(EmitContext&) {
165 throw LogicError("Unreachable instruction"); 169 throw LogicError("Unreachable instruction");
166} 170}
@@ -193,6 +197,10 @@ Id EmitBoundImageQueryDimensions(EmitContext&) {
193 throw LogicError("Unreachable instruction"); 197 throw LogicError("Unreachable instruction");
194} 198}
195 199
200Id EmitBoundImageQueryLod(EmitContext&) {
201 throw LogicError("Unreachable instruction");
202}
203
196Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, 204Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords,
197 Id bias_lc, Id offset) { 205 Id bias_lc, Id offset) {
198 const auto info{inst->Flags<IR::TextureInstInfo>()}; 206 const auto info{inst->Flags<IR::TextureInstInfo>()};
@@ -287,4 +295,11 @@ Id EmitImageQueryDimensions(EmitContext& ctx, IR::Inst* inst, const IR::Value& i
287 throw LogicError("Unspecified image type {}", info.type.Value()); 295 throw LogicError("Unspecified image type {}", info.type.Value());
288} 296}
289 297
298Id EmitImageQueryLod(EmitContext& ctx, IR::Inst*, const IR::Value& index, Id coords) {
299 const Id zero{ctx.f32_zero_value};
300 const Id image{TextureImage(ctx, index)};
301 return ctx.OpCompositeConstruct(ctx.F32[4], ctx.OpImageQueryLod(ctx.F32[2], image, coords),
302 zero, zero);
303}
304
290} // namespace Shader::Backend::SPIRV 305} // namespace Shader::Backend::SPIRV