On Thu, 2012-09-06 at 08:01 -0600, Brian Paul wrote: > On 09/05/2012 06:26 PM, Vadim Girlin wrote: > > On Tue, 2012-09-04 at 17:05 -0600, Brian Paul wrote: > >> --- > >> tests/all.tests | 1 + > >> tests/texturing/CMakeLists.gl.txt | 1 + > >> tests/texturing/max-texture-size-level.c | 87 > >> ++++++++++++++++++++++++++++++ > >> 3 files changed, 89 insertions(+), 0 deletions(-) > >> create mode 100644 tests/texturing/max-texture-size-level.c > >> > >> diff --git a/tests/all.tests b/tests/all.tests > >> index 5b1c1cc..154e1e5 100644 > >> --- a/tests/all.tests > >> +++ b/tests/all.tests > >> @@ -734,6 +734,7 @@ add_plain_test(texturing, 'lodclamp-between') > >> add_plain_test(texturing, 'lodclamp-between-max') > >> add_plain_test(texturing, 'mipmap-setup') > >> add_plain_test(texturing, 'max-texture-size') > >> +add_concurrent_test(texturing, 'max-texture-size-level') > >> add_concurrent_test(texturing, 'proxy-texture') > >> add_plain_test(texturing, 'rg-draw-pixels') > >> add_plain_test(texturing, 'rg-teximage-01') > >> diff --git a/tests/texturing/CMakeLists.gl.txt > >> b/tests/texturing/CMakeLists.gl.txt > >> index 4fa0f7f..c439273 100644 > >> --- a/tests/texturing/CMakeLists.gl.txt > >> +++ b/tests/texturing/CMakeLists.gl.txt > >> @@ -45,6 +45,7 @@ piglit_add_executable (lodclamp lodclamp.c) > >> piglit_add_executable (lodclamp-between lodclamp-between.c) > >> piglit_add_executable (lodclamp-between-max lodclamp-between-max.c) > >> piglit_add_executable (max-texture-size max-texture-size.c) > >> +piglit_add_executable (max-texture-size-level max-texture-size-level.c) > >> piglit_add_executable (mipmap-setup mipmap-setup.c) > >> piglit_add_executable (proxy-texture proxy-texture.c) > >> piglit_add_executable (rg-draw-pixels rg-draw-pixels.c) > >> diff --git a/tests/texturing/max-texture-size-level.c > >> b/tests/texturing/max-texture-size-level.c > >> new file mode 100644 > >> index 0000000..390e862 > >> --- /dev/null > >> +++ b/tests/texturing/max-texture-size-level.c > >> @@ -0,0 +1,87 @@ > >> +/* > >> + * Copyright 2012 VMware, Inc. > >> + * > >> + * Permission is hereby granted, free of charge, to any person obtaining a > >> + * copy of this software and associated documentation files (the > >> "Software"), > >> + * to deal in the Software without restriction, including without > >> limitation > >> + * the rights to use, copy, modify, merge, publish, distribute, > >> sublicense, > >> + * and/or sell copies of the Software, and to permit persons to whom the > >> + * Software is furnished to do so, subject to the following conditions: > >> + * > >> + * The above copyright notice and this permission notice (including the > >> next > >> + * paragraph) shall be included in all copies or substantial portions of > >> the > >> + * Software. > >> + * > >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > >> EXPRESS OR > >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > >> MERCHANTABILITY, > >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT > >> SHALL > >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR > >> OTHER > >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > >> DEALINGS > >> + * IN THE SOFTWARE. > >> + */ > >> + > >> +/** > >> + * Test glTexImage with an image too large for the given mipmap level. > >> + * > >> + * Page 157 of the OpenGL 2.1 spec says: > >> + * > >> + * "In a similar fashion, the maximum allowable width of a one- or > >> + * two- dimensional texture image, and the maximum allowable height of a > >> + * two- dimensional texture image, must be at least 2k−lod + 2bt for > >> + * image arrays of level 0 through k, where k is the log base 2 of MAX > >> + * TEXTURE SIZE. The maximum allowable width and height of a cube map > >> + * texture must be the same, and must be at least 2k−lod + 2bt for image > >> + * arrays level 0 through k, where k is the log base 2 of MAX CUBE MAP > >> + * TEXTURE SIZE." > >> + */ > >> + > >> +#include "piglit-util-gl-common.h" > >> + > >> +PIGLIT_GL_TEST_MAIN(100, 100, GLUT_RGBA | GLUT_DOUBLE) > >> + > >> +enum piglit_result > >> +piglit_display(void) > >> +{ > >> + /* no op */ > >> + return PIGLIT_PASS; > >> +} > >> + > >> + > >> +void > >> +piglit_init(int argc, char **argv) > >> +{ > >> + GLint maxSize; > >> + GLuint tex; > >> + bool pass; > >> + > >> + glGetIntegerv(GL_MAX_TEXTURE_SIZE,&maxSize); > >> + printf("GL_MAX_TEXTURE_SIZE = %d\n", maxSize); > >> + > >> + glGenTextures(1,&tex); > >> + glBindTexture(GL_TEXTURE_2D, tex); > >> + > >> + /* The max texture size should be OK for mipmap level zero. */ > >> + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, > >> + maxSize, maxSize, 0, > >> + GL_RGBA, GL_UNSIGNED_BYTE, NULL); > >> + pass = piglit_check_gl_error(GL_NO_ERROR); > > > > I think we can also expect OUT_OF_MEMORY here, is it correct? > > It's unlikely. > > FWIW, GL_OUT_OF_MEMORY can theoretically be generated by almost any GL > call. > > -Brian
MAX_TEXTURE_SIZE is 16384 for my radeon 5750, so this test is trying to create the texture consuming 16384 x 16384 x 4bytes + mipmap levels = 1.3GB. There is 0.5GB of onboard VRAM. I guess the probability of OUT_OF_MEMORY in my case is close to 100%. I don't think that the driver should return lower value for MAX_TEXTURE_SIZE - it's possible to create 16384x1 texture, or 1x16384, or even 16384x16384 in some other format. As far as I understand it, MAX_TEXTURE_SIZE doesn't give any guarantees about possibility of using MAX_TEXTURE_SIZE x MAX_TEXTURE_SIZE texture in any format, it just tells that sizes greater than MAX_TEXTURE_SIZE aren't allowed. Here is a fragment of FAQ from opengl.org: http://www.opengl.org/archives/resources/faq/technical/texture.htm#text0120 > You can obtain an estimate of the maximum texture size your > implementation supports with the following call: > > GLint texSize; > glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize); > > ... > > This is only an estimate, because the glGet*() function doesn't know > what format, internalformat, type, and other parameters you'll be > using for any given texture. OpenGL 1.1 and greater solves this > problem by allowing texture proxy. I'm sure that this test will always fail on my hw due to OOM. Vadim _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit