Merge pull request #2021 from siegelaaron94/opengles_texture1d_textureSize

GLSL: Account for ES sampler1D to sampler2D promotion in textureSize.
This commit is contained in:
Hans-Kristian Arntzen 2022-09-19 19:10:07 +02:00 committed by GitHub
commit 1ad6006130
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12597,12 +12597,12 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
uint32_t result_type = ops[0]; uint32_t result_type = ops[0];
uint32_t id = ops[1]; uint32_t id = ops[1];
uint32_t img = ops[2]; uint32_t img = ops[2];
auto &type = expression_type(img);
auto &imgtype = get<SPIRType>(type.self);
std::string fname = "textureSize"; std::string fname = "textureSize";
if (is_legacy_desktop()) if (is_legacy_desktop())
{ {
auto &type = expression_type(img);
auto &imgtype = get<SPIRType>(type.self);
fname = legacy_tex_op(fname, imgtype, img); fname = legacy_tex_op(fname, imgtype, img);
} }
else if (is_legacy_es()) else if (is_legacy_es())
@ -12610,6 +12610,11 @@ void CompilerGLSL::emit_instruction(const Instruction &instruction)
auto expr = join(fname, "(", convert_separate_image_to_expression(img), ", ", auto expr = join(fname, "(", convert_separate_image_to_expression(img), ", ",
bitcast_expression(SPIRType::Int, ops[3]), ")"); bitcast_expression(SPIRType::Int, ops[3]), ")");
// ES needs to emulate 1D images as 2D.
if (type.image.dim == Dim1D && options.es)
expr = join(expr, ".x");
auto &restype = get<SPIRType>(ops[0]); auto &restype = get<SPIRType>(ops[0]);
expr = bitcast_expression(restype, SPIRType::Int, expr); expr = bitcast_expression(restype, SPIRType::Int, expr);
emit_op(result_type, id, expr, true); emit_op(result_type, id, expr, true);