diff options
| author | Brian Paul <brianp@vmware.com> | 2010-05-03 17:08:17 -0600 | 
|---|---|---|
| committer | Brian Paul <brianp@vmware.com> | 2010-05-03 17:08:17 -0600 | 
| commit | 1fc5a318a64b10567ed6990eb04b2dc3ecb2b347 (patch) | |
| tree | f03aa1377fc76b1af358c7f5b246de554cc3260e | |
| parent | d8306c9caf3190f2bca6b83c653cd4711c25f98a (diff) | |
gallium: move framebuffer utility functions into a new file
| -rw-r--r-- | src/gallium/auxiliary/Makefile | 1 | ||||
| -rw-r--r-- | src/gallium/auxiliary/SConscript | 1 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_framebuffer.c | 111 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_framebuffer.h | 49 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_surface.c | 71 | ||||
| -rw-r--r-- | src/gallium/auxiliary/util/u_surface.h | 13 | ||||
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_scene.c | 1 | ||||
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_setup.c | 1 | ||||
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_state_surface.c | 1 | 
9 files changed, 165 insertions, 84 deletions
| diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile index 2daed382cf..e0d9b31354 100644 --- a/src/gallium/auxiliary/Makefile +++ b/src/gallium/auxiliary/Makefile @@ -113,6 +113,7 @@ C_SOURCES = \  	util/u_format_tests.c \  	util/u_format_yuv.c \  	util/u_format_zs.c \ +	util/u_framebuffer.c \  	util/u_gen_mipmap.c \  	util/u_half.c \  	util/u_handle_table.c \ diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript index a0673df8a8..29a1bd0ecb 100644 --- a/src/gallium/auxiliary/SConscript +++ b/src/gallium/auxiliary/SConscript @@ -162,6 +162,7 @@ source = [      'util/u_format_tests.c',      'util/u_format_yuv.c',      'util/u_format_zs.c', +    'util/u_framebuffer.c',      'util/u_gen_mipmap.c',      'util/u_half.c',      'util/u_handle_table.c', diff --git a/src/gallium/auxiliary/util/u_framebuffer.c b/src/gallium/auxiliary/util/u_framebuffer.c new file mode 100644 index 0000000000..bdac12dbca --- /dev/null +++ b/src/gallium/auxiliary/util/u_framebuffer.c @@ -0,0 +1,111 @@ +/************************************************************************** + * + * Copyright 2009-2010 VMware, Inc.  All Rights Reserved. + * + * 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, sub license, 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 NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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. + * + **************************************************************************/ + +/** + * @file + * Framebuffer utility functions. + *   + * @author Brian Paul + */ + + +#include "pipe/p_screen.h" +#include "pipe/p_state.h" +#include "pipe/p_defines.h" +#include "util/u_inlines.h" + +#include "util/u_memory.h" +#include "util/u_framebuffer.h" + + +/** + * Compare pipe_framebuffer_state objects. + * \return TRUE if same, FALSE if different + */ +boolean +util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, +                             const struct pipe_framebuffer_state *src) +{ +   unsigned i; + +   if (dst->width != src->width || +       dst->height != src->height) +      return FALSE; + +   for (i = 0; i < Elements(src->cbufs); i++) { +      if (dst->cbufs[i] != src->cbufs[i]) { +         return FALSE; +      } +   } + +   if (dst->nr_cbufs != src->nr_cbufs) { +      return FALSE; +   } + +   if (dst->zsbuf != src->zsbuf) { +      return FALSE; +   } + +   return TRUE; +} + + +/** + * Copy framebuffer state from src to dst, updating refcounts. + */ +void +util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, +                            const struct pipe_framebuffer_state *src) +{ +   unsigned i; + +   dst->width = src->width; +   dst->height = src->height; + +   for (i = 0; i < Elements(src->cbufs); i++) { +      pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]); +   } + +   dst->nr_cbufs = src->nr_cbufs; + +   pipe_surface_reference(&dst->zsbuf, src->zsbuf); +} + + +void +util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb) +{ +   unsigned i; + +   for (i = 0; i < fb->nr_cbufs; i++) { +      pipe_surface_reference(&fb->cbufs[i], NULL); +   } + +   pipe_surface_reference(&fb->zsbuf, NULL); + +   fb->width = fb->height = 0; +   fb->nr_cbufs = 0; +} diff --git a/src/gallium/auxiliary/util/u_framebuffer.h b/src/gallium/auxiliary/util/u_framebuffer.h new file mode 100644 index 0000000000..adf1254e1b --- /dev/null +++ b/src/gallium/auxiliary/util/u_framebuffer.h @@ -0,0 +1,49 @@ +/************************************************************************** + * + * Copyright 2009-2010 VMware, Inc.  All Rights Reserved. + * + * 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, sub license, 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 NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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. + * + **************************************************************************/ + + +#ifndef U_FRAMEBUFFER_H +#define U_FRAMEBUFFER_H + + +#include "pipe/p_compiler.h" +#include "pipe/p_state.h" + + +extern boolean +util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, +                             const struct pipe_framebuffer_state *src); + +extern void +util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, +                            const struct pipe_framebuffer_state *src); + + +extern void +util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb); + + +#endif /* U_FRAMEBUFFER_H */ diff --git a/src/gallium/auxiliary/util/u_surface.c b/src/gallium/auxiliary/util/u_surface.c index 42440d0d67..35a9b484fc 100644 --- a/src/gallium/auxiliary/util/u_surface.c +++ b/src/gallium/auxiliary/util/u_surface.c @@ -114,74 +114,3 @@ util_destroy_rgba_surface(struct pipe_resource *texture,     pipe_surface_reference(&surface, NULL);     pipe_resource_reference(&texture, NULL);  } - - - -/** - * Compare pipe_framebuffer_state objects. - * \return TRUE if same, FALSE if different - */ -boolean -util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, -                             const struct pipe_framebuffer_state *src) -{ -   unsigned i; - -   if (dst->width != src->width || -       dst->height != src->height) -      return FALSE; - -   for (i = 0; i < Elements(src->cbufs); i++) { -      if (dst->cbufs[i] != src->cbufs[i]) { -         return FALSE; -      } -   } - -   if (dst->nr_cbufs != src->nr_cbufs) { -      return FALSE; -   } - -   if (dst->zsbuf != src->zsbuf) { -      return FALSE; -   } - -   return TRUE; -} - - -/** - * Copy framebuffer state from src to dst, updating refcounts. - */ -void -util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, -                            const struct pipe_framebuffer_state *src) -{ -   unsigned i; - -   dst->width = src->width; -   dst->height = src->height; - -   for (i = 0; i < Elements(src->cbufs); i++) { -      pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]); -   } - -   dst->nr_cbufs = src->nr_cbufs; - -   pipe_surface_reference(&dst->zsbuf, src->zsbuf); -} - - -void -util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb) -{ -   unsigned i; - -   for (i = 0; i < fb->nr_cbufs; i++) { -      pipe_surface_reference(&fb->cbufs[i], NULL); -   } - -   pipe_surface_reference(&fb->zsbuf, NULL); - -   fb->width = fb->height = 0; -   fb->nr_cbufs = 0; -} diff --git a/src/gallium/auxiliary/util/u_surface.h b/src/gallium/auxiliary/util/u_surface.h index 119fcd4ce8..a61bb29171 100644 --- a/src/gallium/auxiliary/util/u_surface.h +++ b/src/gallium/auxiliary/util/u_surface.h @@ -62,17 +62,4 @@ util_destroy_rgba_surface(struct pipe_resource *texture,                            struct pipe_surface *surface); -extern boolean -util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, -                             const struct pipe_framebuffer_state *src); - -extern void -util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, -                            const struct pipe_framebuffer_state *src); - - -extern void -util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb); - -  #endif /* U_SURFACE_H */ diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c index 1482a777ff..887f2dbad9 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.c +++ b/src/gallium/drivers/llvmpipe/lp_scene.c @@ -25,6 +25,7 @@   *   **************************************************************************/ +#include "util/u_framebuffer.h"  #include "util/u_math.h"  #include "util/u_memory.h"  #include "util/u_inlines.h" diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 2150956008..1a2cd55b16 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -33,6 +33,7 @@   */  #include "pipe/p_defines.h" +#include "util/u_framebuffer.h"  #include "util/u_inlines.h"  #include "util/u_memory.h"  #include "util/u_pack_color.h" diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c index 63b8f27b39..4b135aaf8b 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c @@ -30,6 +30,7 @@  #include "pipe/p_state.h"  #include "util/u_inlines.h" +#include "util/u_framebuffer.h"  #include "util/u_surface.h"  #include "lp_context.h"  #include "lp_scene.h" | 
