[Piglit] [PATCH 3/8] texsubimage-depth-formats: add PBO option
Anuj Phogat
anuj.phogat at gmail.com
Tue Jan 19 15:27:50 PST 2016
On Mon, Jan 18, 2016 at 1:40 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> ---
> tests/all.py | 1 +
> tests/texturing/texsubimage-depth-formats.c | 37 +++++++++++++++++++++++++----
> 2 files changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/tests/all.py b/tests/all.py
> index 1db8062..56b57fe 100644
> --- a/tests/all.py
> +++ b/tests/all.py
> @@ -2289,6 +2289,7 @@ with profile.group_manager(
> g(['texsubimage', 'pbo'])
> g(['texsubimage', 'array', 'pbo'])
> g(['texsubimage', 'cube_map_array', 'pbo'])
> + g(['texsubimage-depth-formats', 'pbo'])
> g(['texsubimage-unpack', 'pbo'])
>
> # Group ARB_provoking_vertex
> diff --git a/tests/texturing/texsubimage-depth-formats.c b/tests/texturing/texsubimage-depth-formats.c
> index b6d9416..35263cb 100644
> --- a/tests/texturing/texsubimage-depth-formats.c
> +++ b/tests/texturing/texsubimage-depth-formats.c
> @@ -35,6 +35,8 @@ PIGLIT_GL_TEST_CONFIG_BEGIN
>
> PIGLIT_GL_TEST_CONFIG_END
>
> +static bool use_pbo = false;
> +
> static GLuint tex[4];
> struct size {
> int width, height;
> @@ -69,6 +71,7 @@ load_texture(int formats_idx, int tex_size_idx)
> unsigned n_pixels = w_by_2 * h_by_2;
> unsigned buffer_size = n_pixels * formats[formats_idx].size;
> void* texDepthData[4];
> + GLuint buffer;
>
> for (i = 0; i < 4; i++)
> texDepthData[i] = malloc(buffer_size);
> @@ -127,18 +130,37 @@ load_texture(int formats_idx, int tex_size_idx)
> else
> glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
>
> + if (use_pbo) {
> + glGenBuffers(1, &buffer);
> + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer);
> + }
> +
> + if (use_pbo)
> + glBufferData(GL_PIXEL_UNPACK_BUFFER, buffer_size, texDepthData[0], GL_STATIC_DRAW);
> glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w_by_2, h_by_2,
> formats[formats_idx].format, formats[formats_idx].type,
> - texDepthData[0]);
> + use_pbo ? NULL : texDepthData[0]);
> +
> + if (use_pbo)
> + glBufferData(GL_PIXEL_UNPACK_BUFFER, buffer_size, texDepthData[1], GL_STATIC_DRAW);
> glTexSubImage2D(GL_TEXTURE_2D, 0, w_by_2, 0, w_by_2, h_by_2,
> formats[formats_idx].format, formats[formats_idx].type,
> - texDepthData[1]);
> + use_pbo ? NULL : texDepthData[1]);
> +
> + if (use_pbo)
> + glBufferData(GL_PIXEL_UNPACK_BUFFER, buffer_size, texDepthData[2], GL_STATIC_DRAW);
> glTexSubImage2D(GL_TEXTURE_2D, 0, 0, h_by_2, w_by_2, h_by_2,
> formats[formats_idx].format, formats[formats_idx].type,
> - texDepthData[2]);
> + use_pbo ? NULL : texDepthData[2]);
> +
> + if (use_pbo)
> + glBufferData(GL_PIXEL_UNPACK_BUFFER, buffer_size, texDepthData[3], GL_STATIC_DRAW);
> glTexSubImage2D(GL_TEXTURE_2D, 0, w_by_2, h_by_2, w_by_2, h_by_2,
> formats[formats_idx].format, formats[formats_idx].type,
> - texDepthData[3]);
> + use_pbo ? NULL : texDepthData[3]);
> +
> + if (use_pbo)
> + glDeleteBuffers(1, &buffer);
>
> for (i = 0; i < 4; i++)
> free(texDepthData[i]);
> @@ -147,6 +169,13 @@ load_texture(int formats_idx, int tex_size_idx)
> void
> piglit_init(int argc, char **argv)
> {
> + for (int i = 1; i < argc; ++i) {
> + if (!strcmp(argv[i], "pbo")) {
> + piglit_require_extension("GL_ARB_pixel_buffer_object");
> + use_pbo = true;
> + }
> + }
> +
> piglit_ortho_projection(piglit_width, piglit_height, GL_FALSE);
> glClearColor(0.0, 0.0, 0.0, 1.0);
> }
> --
> 2.5.0
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
Patches 3-8 are:
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>
More information about the Piglit
mailing list