Re: [PATCH 2/6] dri/intel: Split out DRI2 buffer update code to separate function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 31, 2013 at 04:13:12PM -0700, Keith Packard wrote:
> Make an easy place to splice in a DRI3 version of this function
> 
> Signed-off-by: Keith Packard <keithp@xxxxxxxxxx>
> ---
>  src/mesa/drivers/dri/i915/intel_context.c | 90 +++++++++++++++++--------------
>  src/mesa/drivers/dri/i965/brw_context.c   | 22 ++++++--
>  2 files changed, 68 insertions(+), 44 deletions(-)

Reviewed-by: Kristian Høgsberg <krh@xxxxxxxxxxxxx>

> diff --git a/src/mesa/drivers/dri/i915/intel_context.c b/src/mesa/drivers/dri/i915/intel_context.c
> index 2748514..1798bc7 100644
> --- a/src/mesa/drivers/dri/i915/intel_context.c
> +++ b/src/mesa/drivers/dri/i915/intel_context.c
> @@ -133,15 +133,58 @@ intel_process_dri2_buffer(struct intel_context *intel,
>  			  struct intel_renderbuffer *rb,
>  			  const char *buffer_name);
>  
> -void
> -intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
> +static void
> +intel_update_dri2_buffers(struct intel_context *intel, __DRIdrawable *drawable)
>  {
> -   struct gl_framebuffer *fb = drawable->driverPrivate;
> -   struct intel_renderbuffer *rb;
> -   struct intel_context *intel = context->driverPrivate;
>     __DRIbuffer *buffers = NULL;
>     int i, count;
>     const char *region_name;
> +   struct intel_renderbuffer *rb;
> +   struct gl_framebuffer *fb = drawable->driverPrivate;
> +
> +   intel_query_dri2_buffers(intel, drawable, &buffers, &count);
> +
> +   if (buffers == NULL)
> +      return;
> +
> +   for (i = 0; i < count; i++) {
> +      switch (buffers[i].attachment) {
> +      case __DRI_BUFFER_FRONT_LEFT:
> +         rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
> +         region_name = "dri2 front buffer";
> +         break;
> +
> +      case __DRI_BUFFER_FAKE_FRONT_LEFT:
> +         rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
> +         region_name = "dri2 fake front buffer";
> +         break;
> +
> +      case __DRI_BUFFER_BACK_LEFT:
> +         rb = intel_get_renderbuffer(fb, BUFFER_BACK_LEFT);
> +         region_name = "dri2 back buffer";
> +         break;
> +
> +      case __DRI_BUFFER_DEPTH:
> +      case __DRI_BUFFER_HIZ:
> +      case __DRI_BUFFER_DEPTH_STENCIL:
> +      case __DRI_BUFFER_STENCIL:
> +      case __DRI_BUFFER_ACCUM:
> +      default:
> +         fprintf(stderr,
> +                 "unhandled buffer attach event, attachment type %d\n",
> +                 buffers[i].attachment);
> +         return;
> +      }
> +
> +      intel_process_dri2_buffer(intel, drawable, &buffers[i], rb, region_name);
> +   }
> +}
> +
> +void
> +intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
> +{
> +   struct intel_context *intel = context->driverPrivate;
> +   __DRIscreen *screen = intel->intelScreen->driScrnPriv;
>  
>     /* Set this up front, so that in case our buffers get invalidated
>      * while we're getting new buffers, we don't clobber the stamp and
> @@ -151,42 +194,7 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
>     if (unlikely(INTEL_DEBUG & DEBUG_DRI))
>        fprintf(stderr, "enter %s, drawable %p\n", __func__, drawable);
>  
> -   intel_query_dri2_buffers(intel, drawable, &buffers, &count);
> -
> -   if (buffers == NULL)
> -      return;
> -
> -   for (i = 0; i < count; i++) {
> -       switch (buffers[i].attachment) {
> -       case __DRI_BUFFER_FRONT_LEFT:
> -	   rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
> -	   region_name = "dri2 front buffer";
> -	   break;
> -
> -       case __DRI_BUFFER_FAKE_FRONT_LEFT:
> -	   rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
> -	   region_name = "dri2 fake front buffer";
> -	   break;
> -
> -       case __DRI_BUFFER_BACK_LEFT:
> -	   rb = intel_get_renderbuffer(fb, BUFFER_BACK_LEFT);
> -	   region_name = "dri2 back buffer";
> -	   break;
> -
> -       case __DRI_BUFFER_DEPTH:
> -       case __DRI_BUFFER_HIZ:
> -       case __DRI_BUFFER_DEPTH_STENCIL:
> -       case __DRI_BUFFER_STENCIL:
> -       case __DRI_BUFFER_ACCUM:
> -       default:
> -	   fprintf(stderr,
> -		   "unhandled buffer attach event, attachment type %d\n",
> -		   buffers[i].attachment);
> -	   return;
> -       }
> -
> -       intel_process_dri2_buffer(intel, drawable, &buffers[i], rb, region_name);
> -   }
> +   intel_update_dri2_buffers(intel, drawable);
>  
>     driUpdateFramebufferSize(&intel->ctx, drawable);
>  }
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index 38147e9..c213b31 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -929,12 +929,11 @@ intel_process_dri2_buffer(struct brw_context *brw,
>                            struct intel_renderbuffer *rb,
>                            const char *buffer_name);
>  
> -void
> -intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
> +static void
> +intel_update_dri2_buffers(struct brw_context *brw, __DRIdrawable *drawable)
>  {
>     struct gl_framebuffer *fb = drawable->driverPrivate;
>     struct intel_renderbuffer *rb;
> -   struct brw_context *brw = context->driverPrivate;
>     __DRIbuffer *buffers = NULL;
>     int i, count;
>     const char *region_name;
> @@ -984,6 +983,23 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
>         intel_process_dri2_buffer(brw, drawable, &buffers[i], rb, region_name);
>     }
>  
> +}
> +
> +void
> +intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
> +{
> +   struct brw_context *brw = context->driverPrivate;
> +
> +   /* Set this up front, so that in case our buffers get invalidated
> +    * while we're getting new buffers, we don't clobber the stamp and
> +    * thus ignore the invalidate. */
> +   drawable->lastStamp = drawable->dri2.stamp;
> +
> +   if (unlikely(INTEL_DEBUG & DEBUG_DRI))
> +      fprintf(stderr, "enter %s, drawable %p\n", __func__, drawable);
> +
> +   intel_update_dri2_buffers(brw, drawable);
> +
>     driUpdateFramebufferSize(&brw->ctx, drawable);
>  }
>  
> -- 
> 1.8.4.2
> 
> 
> ------------------------------------------------------------------------------
> Android is increasing in popularity, but the open development platform that
> developers love is also attractive to malware creators. Download this white
> paper to learn more about secure code signing practices that can help keep
> Android apps secure.
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> --
> _______________________________________________
> Dri-devel mailing list
> Dri-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/dri-devel
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
--
_______________________________________________
Dri-devel mailing list
Dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux