Test for the regression which happened when GL_TEXTURE_BUFFER was allowed to have incompatible format.
v2: Removed unnecessary code duplication - use upload_image instead of init_level. (Francisco Jerez) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106465 Signed-off-by: Danylo Piliaiev <danylo.pilia...@globallogic.com> --- .../arb_shader_image_load_store/invalid.c | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tests/spec/arb_shader_image_load_store/invalid.c b/tests/spec/arb_shader_image_load_store/invalid.c index ed4b6c064..99f6703a4 100644 --- a/tests/spec/arb_shader_image_load_store/invalid.c +++ b/tests/spec/arb_shader_image_load_store/invalid.c @@ -266,13 +266,17 @@ static bool invalidate_incompatible_format(const struct image_info img, GLuint prog) { GLenum base_format = image_base_internal_format(img.format); + uint32_t pixels[4 * N]; + init_pixels(img, pixels, 1, 1, 1, 1); + + /* upload_image instead of init_level to support GL_TEXTURE_BUFFER */ + bool ret = upload_image(img, 0, pixels); + /* Pick an incompatible texture format with a compatible base * type. */ - bool ret = init_level(img, 0, (base_format == GL_RGBA32F ? - GL_RGBA8 : GL_RG32UI), W, H); - glBindImageTexture(0, get_texture(0), 0, GL_TRUE, 0, - GL_READ_WRITE, img.format->format); + GL_READ_WRITE, (base_format == GL_RGBA32F ? + GL_RGBA8 : GL_RG32UI)); return ret && piglit_check_gl_error(GL_NO_ERROR); } @@ -346,6 +350,8 @@ piglit_init(int argc, char **argv) for (op = image_ops; op->name; ++op) { const struct image_info def_img = image_info( GL_TEXTURE_2D, op->formats[0].format, W, H); + const struct image_info def_img_buffer = image_info( + GL_TEXTURE_BUFFER, op->formats[0].format, W, H); /* * According to the spec, an access is considered @@ -399,6 +405,15 @@ piglit_init(int argc, char **argv) invalidate_incompatible_format, false), "%s/incompatible format test", op->name); + /* Test for the regression which happened when + * GL_TEXTURE_BUFFER was allowed to have incompatible format. + */ + subtest(&status, true, + run_test(op, def_img_buffer, def_img_buffer, + invalidate_incompatible_format, false), + "%s/incompatible format test/image%s", + op->name, def_img_buffer.target->name); + /* * " * the texture bound to the image unit has layers, * and the selected layer or cube map face doesn't -- 2.17.1 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit