Link piglit-framework-fbo.c into libpiglitutil, and kill all code in piglit-framework.c which exists piglit-framework-fbo.c.
CC: Pauli Nieminen <[email protected]> Signed-off-by: Chad Versace <[email protected]> --- tests/util/CMakeLists.txt | 1 + tests/util/piglit-framework-fbo.c | 6 +- tests/util/piglit-framework-fbo.h | 29 +++++++++ tests/util/piglit-framework.c | 130 +------------------------------------ 4 files changed, 37 insertions(+), 129 deletions(-) create mode 100644 tests/util/piglit-framework-fbo.h diff --git a/tests/util/CMakeLists.txt b/tests/util/CMakeLists.txt index c7fe8cb..cd8f518 100644 --- a/tests/util/CMakeLists.txt +++ b/tests/util/CMakeLists.txt @@ -17,6 +17,7 @@ set(UTIL_SOURCES piglit-util-enum.c shader-load.c piglit-framework.c + piglit-framework-fbo.c rgb9e5.c ) diff --git a/tests/util/piglit-framework-fbo.c b/tests/util/piglit-framework-fbo.c index 3b7ae34..277aa1d 100644 --- a/tests/util/piglit-framework-fbo.c +++ b/tests/util/piglit-framework-fbo.c @@ -40,6 +40,8 @@ #include "piglit-glx-util.h" #endif +bool piglit_use_fbo = false; + #ifdef PIGLIT_FRAMEWORK_FBO_USE_GLX Display *piglit_glx_dpy; Window piglit_glx_window; @@ -153,7 +155,7 @@ piglit_framework_fbo_gl_init() #endif /* PIGLIT_FRAMEWORK_FBO_DISABLED */ } -static bool +bool piglit_framework_fbo_init(void) { #if defined(PIGLIT_FRAMEWORK_FBO_USE_GLX) @@ -163,7 +165,7 @@ piglit_framework_fbo_init(void) return piglit_framework_fbo_gl_init(); } -static void +void piglit_framework_fbo_destroy(void) { #ifdef USE_OPENGL diff --git a/tests/util/piglit-framework-fbo.h b/tests/util/piglit-framework-fbo.h new file mode 100644 index 0000000..af55472 --- /dev/null +++ b/tests/util/piglit-framework-fbo.h @@ -0,0 +1,29 @@ +/* + * Copyright © 2012 Intel Corporation + * + * 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. + */ + +#include "piglit-util.h" + +extern bool piglit_use_fbo; + +bool piglit_framework_fbo_init(void); +void piglit_framework_fbo_destroy(void); diff --git a/tests/util/piglit-framework.c b/tests/util/piglit-framework.c index dac04b7..e8eea38 100644 --- a/tests/util/piglit-framework.c +++ b/tests/util/piglit-framework.c @@ -34,21 +34,17 @@ #include "piglit-util.h" #include "piglit-framework.h" +#include "piglit-framework-fbo.h" + #ifdef USE_GLX #include "piglit-glx-util.h" #endif int piglit_automatic = 0; -bool piglit_use_fbo = false; unsigned piglit_winsys_fbo = 0; + static int piglit_window; static enum piglit_result result; -#ifdef USE_GLX -Display *piglit_glx_dpy; -Window piglit_glx_window; -XVisualInfo *piglit_glx_visinfo; -GLXContext piglit_glx_context; -#endif static void display(void) @@ -112,126 +108,6 @@ piglit_framework_glut_init(int argc, char *argv[]) #endif } -#ifdef USE_GLX -static void -piglit_framework_fbo_glx_init() -{ - piglit_glx_dpy = piglit_get_glx_display(); - - /* Unfortunately in GLX we need a drawable to bind our context - * to. Make an unmapped window. - */ - piglit_glx_visinfo = piglit_get_glx_visual(piglit_glx_dpy); - - piglit_glx_context = piglit_get_glx_context(piglit_glx_dpy, - piglit_glx_visinfo); - - piglit_glx_window = piglit_get_glx_window_unmapped(piglit_glx_dpy, - piglit_glx_visinfo); - - glXMakeCurrent(piglit_glx_dpy, piglit_glx_window, piglit_glx_context); -} -#endif - -static void -piglit_framework_fbo_glx_destroy() -{ -#ifdef USE_GLX - glXMakeCurrent(piglit_glx_dpy, None, None); - glXDestroyContext(piglit_glx_dpy, piglit_glx_context); - XFree(piglit_glx_visinfo); - XCloseDisplay(piglit_glx_dpy); -#endif -} - -static void -piglit_framework_fbo_destroy() -{ -#ifdef USE_OPENGL - glDeleteFramebuffers(1, &piglit_winsys_fbo); -#endif - piglit_winsys_fbo = 0; - piglit_framework_fbo_glx_destroy(); -} - -static bool -piglit_framework_fbo_init() -{ -#ifdef USE_GLX - GLuint tex, depth = 0; - GLenum status; - - piglit_framework_fbo_glx_init(); - -#ifdef USE_OPENGL - glewInit(); - - if (piglit_get_gl_version() < 20) - return false; -#endif - - glGenFramebuffers(1, &piglit_winsys_fbo); - glBindFramebuffer(GL_FRAMEBUFFER, piglit_winsys_fbo); - - glGenTextures(1, &tex); - glBindTexture(GL_TEXTURE_2D, tex); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, - piglit_width, piglit_height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, - tex, - 0); - - if (piglit_window_mode & (GLUT_DEPTH | GLUT_STENCIL)) { - GLenum depth_stencil; - -#ifdef USE_OPENGL - depth_stencil = GL_DEPTH_STENCIL; -#else - depth_stencil = GL_DEPTH_STENCIL_OES; -#endif - - glGenTextures(1, &depth); - glBindTexture(GL_TEXTURE_2D, depth); - glTexImage2D(GL_TEXTURE_2D, 0, depth_stencil, - piglit_width, piglit_height, 0, - GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_DEPTH_ATTACHMENT, - GL_TEXTURE_2D, - depth, - 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_STENCIL_ATTACHMENT, - GL_TEXTURE_2D, - depth, - 0); - } - - glBindTexture(GL_TEXTURE_2D, 0); - - status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (status != GL_FRAMEBUFFER_COMPLETE) { - fprintf(stderr, - "-fbo resulted in incomplete FBO, falling back\n"); - glBindFramebuffer(GL_FRAMEBUFFER, 0); - - glDeleteTextures(1, &depth); - glDeleteTextures(1, &tex); - - piglit_framework_fbo_destroy(); - - return false; - } - - return true; -#else /* USE_GLX */ - return false; -#endif /* USE_GLX */ -} - static void delete_arg(char *argv[], int argc, int arg) { -- 1.7.10.1 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
