diff options
Diffstat (limited to 'src/gallium')
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri1_helper.c | 129 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri1_helper.h | 61 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_drawable.c | 9 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_drawable.h | 14 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_screen.c | 3 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/common/dri_screen.h | 5 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/drm/Makefile | 1 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/drm/SConscript | 1 | ||||
| l--------- | src/gallium/state_trackers/dri/drm/dri1_helper.c | 1 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/sw/Makefile | 1 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/sw/SConscript | 1 | ||||
| l--------- | src/gallium/state_trackers/dri/sw/dri1_helper.c | 1 | ||||
| -rw-r--r-- | src/gallium/state_trackers/dri/sw/drisw.c | 25 | 
13 files changed, 23 insertions, 229 deletions
diff --git a/src/gallium/state_trackers/dri/common/dri1_helper.c b/src/gallium/state_trackers/dri/common/dri1_helper.c deleted file mode 100644 index ad6c7d3750..0000000000 --- a/src/gallium/state_trackers/dri/common/dri1_helper.c +++ /dev/null @@ -1,129 +0,0 @@ -/************************************************************************** - * - * Copyright 2009, 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. - * - **************************************************************************/ -/* - * Management of pipe objects (surface / pipe / fences) used by DRI1 and DRISW. - * - * Author: Keith Whitwell <keithw@vmware.com> - * Author: Jakob Bornecrantz <wallbraker@gmail.com> - */ - -#include "util/u_inlines.h" -#include "pipe/p_context.h" - -#include "dri_screen.h" -#include "dri_context.h" -#include "dri_drawable.h" -#include "dri1_helper.h" - -struct pipe_fence_handle * -dri1_swap_fences_pop_front(struct dri_drawable *draw) -{ -   struct pipe_screen *screen = dri_screen(draw->sPriv)->base.screen; -   struct pipe_fence_handle *fence = NULL; - -   if (draw->cur_fences >= draw->desired_fences) { -      screen->fence_reference(screen, &fence, draw->swap_fences[draw->tail]); -      screen->fence_reference(screen, &draw->swap_fences[draw->tail++], NULL); -      --draw->cur_fences; -      draw->tail &= DRI_SWAP_FENCES_MASK; -   } -   return fence; -} - -void -dri1_swap_fences_push_back(struct dri_drawable *draw, -                           struct pipe_fence_handle *fence) -{ -   struct pipe_screen *screen = dri_screen(draw->sPriv)->base.screen; - -   if (!fence) -      return; - -   if (draw->cur_fences < DRI_SWAP_FENCES_MAX) { -      draw->cur_fences++; -      screen->fence_reference(screen, &draw->swap_fences[draw->head++], -			      fence); -      draw->head &= DRI_SWAP_FENCES_MASK; -   } -} - -void -dri1_swap_fences_clear(struct dri_drawable *drawable) -{ -   struct pipe_screen *screen = dri_screen(drawable->sPriv)->base.screen; -   struct pipe_fence_handle *fence; - -   while (drawable->cur_fences) { -      fence = dri1_swap_fences_pop_front(drawable); -      screen->fence_reference(screen, &fence, NULL); -   } -} - -struct pipe_surface * -dri1_get_pipe_surface(struct dri_drawable *drawable, struct pipe_resource *ptex) -{ -   struct pipe_screen *pipe_screen = dri_screen(drawable->sPriv)->base.screen; -   struct pipe_surface *psurf = drawable->dri1_surface; - -   if (!psurf || psurf->texture != ptex) { -      pipe_surface_reference(&drawable->dri1_surface, NULL); - -      drawable->dri1_surface = pipe_screen->get_tex_surface(pipe_screen, -            ptex, 0, 0, 0, 0/* no bind flag???*/); - -      psurf = drawable->dri1_surface; -   } - -   return psurf; -} - -void -dri1_destroy_pipe_surface(struct dri_drawable *drawable) -{ -   pipe_surface_reference(&drawable->dri1_surface, NULL); -} - -struct pipe_context * -dri1_get_pipe_context(struct dri_screen *screen) -{ -   struct pipe_context *pipe = screen->dri1_pipe; - -   if (!pipe) { -      screen->dri1_pipe = -         screen->base.screen->context_create(screen->base.screen, NULL); -      pipe = screen->dri1_pipe; -   } - -   return pipe; -} - -void -dri1_destroy_pipe_context(struct dri_screen *screen) -{ -   if (screen->dri1_pipe) -      screen->dri1_pipe->destroy(screen->dri1_pipe); -} diff --git a/src/gallium/state_trackers/dri/common/dri1_helper.h b/src/gallium/state_trackers/dri/common/dri1_helper.h deleted file mode 100644 index c98adf2df2..0000000000 --- a/src/gallium/state_trackers/dri/common/dri1_helper.h +++ /dev/null @@ -1,61 +0,0 @@ -/************************************************************************** - * - * Copyright 2009, 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. - * - **************************************************************************/ -/* - * Author: Keith Whitwell <keithw@vmware.com> - * Author: Jakob Bornecrantz <wallbraker@gmail.com> - */ - -#ifndef DRI1_HELPER_H -#define DRI1_HELPER_H - -#include "dri_screen.h" -#include "dri_context.h" -#include "dri_drawable.h" - -struct pipe_fence_handle * -dri1_swap_fences_pop_front(struct dri_drawable *draw); - -void -dri1_swap_fences_push_back(struct dri_drawable *draw, -                           struct pipe_fence_handle *fence); - -void -dri1_swap_fences_clear(struct dri_drawable *drawable); - -struct pipe_surface * -dri1_get_pipe_surface(struct dri_drawable *drawable, struct pipe_resource *ptex); - -void -dri1_destroy_pipe_surface(struct dri_drawable *drawable); - -struct pipe_context * -dri1_get_pipe_context(struct dri_screen *screen); - -void -dri1_destroy_pipe_context(struct dri_screen *screen); - -#endif /* DRI1_HELPER_H */ diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c index 2bc0faffef..be824e7e3f 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.c +++ b/src/gallium/state_trackers/dri/common/dri_drawable.c @@ -32,7 +32,6 @@  #include "dri_screen.h"  #include "dri_context.h"  #include "dri_drawable.h" -#include "dri1_helper.h"  #include "pipe/p_screen.h"  #include "util/u_format.h" @@ -138,8 +137,6 @@ dri_create_buffer(__DRIscreen * sPriv,     drawable->dPriv = dPriv;     dPriv->driverPrivate = (void *)drawable; -   drawable->desired_fences = 2; -     return GL_TRUE;  fail:     FREE(drawable); @@ -152,15 +149,11 @@ dri_destroy_buffer(__DRIdrawable * dPriv)     struct dri_drawable *drawable = dri_drawable(dPriv);     int i; -   dri1_swap_fences_clear(drawable); - -   dri1_destroy_pipe_surface(drawable); +   pipe_surface_reference(&drawable->drisw_surface, NULL);     for (i = 0; i < ST_ATTACHMENT_COUNT; i++)        pipe_resource_reference(&drawable->textures[i], NULL); -   drawable->desired_fences = 0; -     FREE(drawable);  } diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h index 5fd650ac88..62c7b0d41a 100644 --- a/src/gallium/state_trackers/dri/common/dri_drawable.h +++ b/src/gallium/state_trackers/dri/common/dri_drawable.h @@ -33,13 +33,9 @@  #include "state_tracker/st_api.h"  struct pipe_surface; -struct pipe_fence_handle;  struct st_framebuffer;  struct dri_context; -#define DRI_SWAP_FENCES_MAX  8 -#define DRI_SWAP_FENCES_MASK 7 -  struct dri_drawable  {     struct st_framebuffer_iface base; @@ -57,14 +53,8 @@ struct dri_drawable     struct pipe_resource *textures[ST_ATTACHMENT_COUNT];     unsigned int texture_mask, texture_stamp; -   struct pipe_fence_handle *swap_fences[DRI_SWAP_FENCES_MAX]; -   unsigned int head; -   unsigned int tail; -   unsigned int desired_fences; -   unsigned int cur_fences; - -   /* used only by DRI1 */ -   struct pipe_surface *dri1_surface; +   /* used only by DRISW */ +   struct pipe_surface *drisw_surface;  };  static INLINE struct dri_drawable * diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c index a2bccefd6c..ed302e37c1 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.c +++ b/src/gallium/state_trackers/dri/common/dri_screen.c @@ -35,7 +35,6 @@  #include "dri_screen.h"  #include "dri_context.h"  #include "dri_drawable.h" -#include "dri1_helper.h"  #include "util/u_inlines.h"  #include "pipe/p_screen.h" @@ -347,8 +346,6 @@ dri_destroy_option_cache(struct dri_screen * screen)  void  dri_destroy_screen_helper(struct dri_screen * screen)  { -   dri1_destroy_pipe_context(screen); -     if (screen->st_api && screen->st_api->destroy)        screen->st_api->destroy(screen->st_api); diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h index cfbebb3341..e27ff9d98e 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.h +++ b/src/gallium/state_trackers/dri/common/dri_screen.h @@ -64,7 +64,7 @@ struct dri_screen     int fd;     drmLock *drmLock; -   /* hooks filled in by dri1, dri2 & drisw */ +   /* hooks filled in by dri2 & drisw */     __DRIimage * (*lookup_egl_image)(struct dri_context *ctx, void *handle);     void (*allocate_textures)(struct dri_drawable *drawable,                               const enum st_attachment_type *statts, @@ -77,9 +77,6 @@ struct dri_screen     boolean d_depth_bits_last;     boolean sd_depth_bits_last;     boolean auto_fake_front; - -   /* used only by DRI1 */ -   struct pipe_context *dri1_pipe;  };  /** cast wrapper */ diff --git a/src/gallium/state_trackers/dri/drm/Makefile b/src/gallium/state_trackers/dri/drm/Makefile index 94fa61fec7..c717b2bdeb 100644 --- a/src/gallium/state_trackers/dri/drm/Makefile +++ b/src/gallium/state_trackers/dri/drm/Makefile @@ -17,7 +17,6 @@ C_SOURCES = \  	dri_context.c \  	dri_screen.c \  	dri_drawable.c \ -	dri1_helper.c \  	dri2.c  #	$(TOP)/src/mesa/drivers/dri/common/utils.c \ diff --git a/src/gallium/state_trackers/dri/drm/SConscript b/src/gallium/state_trackers/dri/drm/SConscript index 0c279d2236..2a0af65f9b 100644 --- a/src/gallium/state_trackers/dri/drm/SConscript +++ b/src/gallium/state_trackers/dri/drm/SConscript @@ -21,7 +21,6 @@ if env['dri']:  	source = [ 'dri_context.c',  		'dri_drawable.c',  		'dri_screen.c', -		'dri1_helper.c',  		'dri2.c',  		]      ) diff --git a/src/gallium/state_trackers/dri/drm/dri1_helper.c b/src/gallium/state_trackers/dri/drm/dri1_helper.c deleted file mode 120000 index c45ebf5c10..0000000000 --- a/src/gallium/state_trackers/dri/drm/dri1_helper.c +++ /dev/null @@ -1 +0,0 @@ -../common/dri1_helper.c
\ No newline at end of file diff --git a/src/gallium/state_trackers/dri/sw/Makefile b/src/gallium/state_trackers/dri/sw/Makefile index a1dadeba5e..33bc0ed9c9 100644 --- a/src/gallium/state_trackers/dri/sw/Makefile +++ b/src/gallium/state_trackers/dri/sw/Makefile @@ -20,7 +20,6 @@ C_SOURCES = \  	dri_context.c \  	dri_screen.c \  	dri_drawable.c \ -	dri1_helper.c \  	drisw.c  include ../../../Makefile.template diff --git a/src/gallium/state_trackers/dri/sw/SConscript b/src/gallium/state_trackers/dri/sw/SConscript index 0c5194d6ed..d2eb66668e 100644 --- a/src/gallium/state_trackers/dri/sw/SConscript +++ b/src/gallium/state_trackers/dri/sw/SConscript @@ -21,7 +21,6 @@ if env['dri']:  	source = [ 'dri_context.c',  		'dri_drawable.c',  		'dri_screen.c', -		'dri1_helper.c',  		'drisw.c',  		]      ) diff --git a/src/gallium/state_trackers/dri/sw/dri1_helper.c b/src/gallium/state_trackers/dri/sw/dri1_helper.c deleted file mode 120000 index c45ebf5c10..0000000000 --- a/src/gallium/state_trackers/dri/sw/dri1_helper.c +++ /dev/null @@ -1 +0,0 @@ -../common/dri1_helper.c
\ No newline at end of file diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c index 9edade9dc9..d2210098d1 100644 --- a/src/gallium/state_trackers/dri/sw/drisw.c +++ b/src/gallium/state_trackers/dri/sw/drisw.c @@ -43,7 +43,6 @@  #include "dri_screen.h"  #include "dri_context.h"  #include "dri_drawable.h" -#include "dri1_helper.h"  DEBUG_GET_ONCE_BOOL_OPTION(swrast_no_present, "SWRAST_NO_PRESENT", FALSE);  static boolean swrast_no_present = FALSE; @@ -88,6 +87,24 @@ drisw_put_image(struct dri_drawable *drawable,     put_image(dPriv, data, width, height);  } +static struct pipe_surface * +drisw_get_pipe_surface(struct dri_drawable *drawable, struct pipe_resource *ptex) +{ +   struct pipe_screen *pipe_screen = dri_screen(drawable->sPriv)->base.screen; +   struct pipe_surface *psurf = drawable->drisw_surface; + +   if (!psurf || psurf->texture != ptex) { +      pipe_surface_reference(&drawable->drisw_surface, NULL); + +      drawable->drisw_surface = pipe_screen->get_tex_surface(pipe_screen, +            ptex, 0, 0, 0, 0/* no bind flag???*/); + +      psurf = drawable->drisw_surface; +   } + +   return psurf; +} +  static INLINE void  drisw_present_texture(__DRIdrawable *dPriv,                        struct pipe_resource *ptex) @@ -99,7 +116,7 @@ drisw_present_texture(__DRIdrawable *dPriv,     if (swrast_no_present)        return; -   psurf = dri1_get_pipe_surface(drawable, ptex); +   psurf = drisw_get_pipe_surface(drawable, ptex);     if (!psurf)        return; @@ -174,10 +191,6 @@ drisw_flush_frontbuffer(struct dri_drawable *drawable,   * During fixed-size operation, the function keeps allocating new attachments   * as they are requested. Unused attachments are not removed, not until the   * framebuffer is resized or destroyed. - * - * It should be possible for DRI1 and DRISW to share this function, but it - * seems a better seperation and safer for each DRI version to provide its own - * function.   */  static void  drisw_allocate_textures(struct dri_drawable *drawable,  | 
