]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/spirv.cpp
Implement other texture query functions for GLSL
[libs/gl.git] / source / glsl / spirv.cpp
index 186521c5efe109b1bfcb1f6d331cfb666f2617fa..63c76f9a2233050851e9491af42855ee9f0e8a8c 100644 (file)
@@ -108,6 +108,8 @@ const SpirVGenerator::BuiltinFunctionInfo SpirVGenerator::builtin_functions[] =
        { "findMSB", "i", "GLSL.std.450", GLSL450_FIND_S_MSB, { 1 }, 0, 0 },
        { "findMSB", "u", "GLSL.std.450", GLSL450_FIND_U_MSB, { 1 }, 0, 0 },
        { "textureSize", "", "", 0, { }, CAP_IMAGE_QUERY, &SpirVGenerator::visit_builtin_texture_query },
+       { "textureQueryLod", "", "", 0, { }, CAP_IMAGE_QUERY, &SpirVGenerator::visit_builtin_texture_query },
+       { "textureQueryLevels", "", "", 0, { }, CAP_IMAGE_QUERY, &SpirVGenerator::visit_builtin_texture_query },
        { "texture", "", "", 0, { }, 0, &SpirVGenerator::visit_builtin_texture },
        { "textureLod", "", "", 0, { }, 0, &SpirVGenerator::visit_builtin_texture },
        { "texelFetch", "", "", 0, { }, 0, &SpirVGenerator::visit_builtin_texel_fetch },
@@ -1292,6 +1294,10 @@ void SpirVGenerator::visit_builtin_texture_query(FunctionCall &call, const vecto
        Opcode opcode;
        if(call.name=="textureSize")
                opcode = OP_IMAGE_QUERY_SIZE_LOD;
+       else if(call.name=="textureQueryLod")
+               opcode = OP_IMAGE_QUERY_LOD;
+       else if(call.name=="textureQueryLevels")
+               opcode = OP_IMAGE_QUERY_LEVELS;
        else
                throw internal_error("invalid texture query call");