[Mesa-dev] [PATCH 01/11] gallium: Add __DRIimageDriverExtension support to gallium

Axel Davy axel.davy at ens.fr
Thu Jun 19 04:23:46 PDT 2014


On 19/06/2014 01:20, Ilia Mirkin wrote :
> +static __DRIbuffer *
> +dri2_allocate_buffer(__DRIscreen *sPriv,
> +                     unsigned attachment, unsigned format,
> +                     int width, int height)
> +{
> +   struct dri_screen *screen = dri_screen(sPriv);
> +   struct dri2_buffer *buffer;
> +   struct pipe_resource templ;
> +   enum pipe_format pf;
> +   unsigned bind = 0;
> +   struct winsys_handle whandle;
> +
> +   switch (attachment) {
> +      case __DRI_BUFFER_FRONT_LEFT:
> +      case __DRI_BUFFER_FAKE_FRONT_LEFT:
> +         bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
> +         break;
> +      case __DRI_BUFFER_BACK_LEFT:
> +         bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
> +         break;
> +      case __DRI_BUFFER_DEPTH:
> +      case __DRI_BUFFER_DEPTH_STENCIL:
> +      case __DRI_BUFFER_STENCIL:
> +            bind = PIPE_BIND_DEPTH_STENCIL; /* XXX sampler? */
> +         break;
> +   }
> +
> +   /* because we get the handle and stride */
> +   bind |= PIPE_BIND_SHARED;
> +
> +   switch (format) {
> +      case 32:
> +         pf = PIPE_FORMAT_B8G8R8A8_UNORM;
> +         break;
> +      case 24:
> +         pf = PIPE_FORMAT_B8G8R8X8_UNORM;
> +         break;
> +      case 16:
> +         pf = PIPE_FORMAT_Z16_UNORM;
> +         break;
> +      default:
> +         return NULL;
> +   }
> +
> +   buffer = CALLOC_STRUCT(dri2_buffer);
> +   if (!buffer)
> +      return NULL;
> +
> +   memset(&templ, 0, sizeof(templ));
> +   templ.bind = bind;
> +   templ.format = pf;
> +   templ.target = PIPE_TEXTURE_2D;
> +   templ.last_level = 0;
> +   templ.width0 = width;
> +   templ.height0 = height;
> +   templ.depth0 = 1;
> +   templ.array_size = 1;
> +
> +   buffer->resource =
> +      screen->base.screen->resource_create(screen->base.screen, &templ);
> I believe the expectation is that before you create resources with a
> certain format/bind combo, you need to check first with
> ->is_format_supported. For example pre-NVA0 nv50 cards don't support
> Z16.
>
>
This is git format-patch noise.
I don't change anything to dri2_allocate_buffer, if you see what is 
added here is removed later.

Axel Davy


More information about the mesa-dev mailing list