summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanylo Piliaiev <danylo.piliaiev@gmail.com>2018-07-23 15:13:34 +0300
committerNanley Chery <nanley.g.chery@intel.com>2018-10-09 10:05:21 -0700
commitb7f493e3a60baddfcf8003a326a31f6b8be2d4ca (patch)
tree1874764ad5444696cf9341dba60b07862c2c57d1
parent3480b355461841ebc3c0b006d0e838ebd0abbcb0 (diff)
arb_shader_image_load_store: Test format incompatible texture buffer
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) v3: Removed upload_image call because image is already called by init_image. (Francisco Jerez) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106465 Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
-rw-r--r--tests/spec/arb_shader_image_load_store/invalid.c19
1 files changed, 14 insertions, 5 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..719304237 100644
--- a/tests/spec/arb_shader_image_load_store/invalid.c
+++ b/tests/spec/arb_shader_image_load_store/invalid.c
@@ -268,13 +268,11 @@ invalidate_incompatible_format(const struct image_info img, GLuint prog)
GLenum base_format = image_base_internal_format(img.format);
/* 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);
+ return piglit_check_gl_error(GL_NO_ERROR);
}
static bool
@@ -346,6 +344,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 +399,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