Re: [Mesa-dev] [PATCH V2 08/11] Gallium/dri2: implement blitImage

2014-05-29 Thread Marek Olšák
Hi Axel,

flush_resource should be called before ctx-st-flush.

Marek

On Thu, May 29, 2014 at 5:22 AM, Axel Davy axel.d...@ens.fr wrote:
 Signed-off-by: Axel Davy axel.d...@ens.fr
 ---
  src/gallium/state_trackers/dri/drm/dri2.c | 43 
 ---
  1 file changed, 40 insertions(+), 3 deletions(-)

 diff --git a/src/gallium/state_trackers/dri/drm/dri2.c 
 b/src/gallium/state_trackers/dri/drm/dri2.c
 index eefbe42..f4db3d8 100644
 --- a/src/gallium/state_trackers/dri/drm/dri2.c
 +++ b/src/gallium/state_trackers/dri/drm/dri2.c
 @@ -1251,6 +1251,42 @@ dri2_from_dma_bufs(__DRIscreen *screen,
  }

  static void
 +dri2_blit_image(__DRIcontext *context, __DRIimage *dst, __DRIimage *src,
 +int dstx0, int dsty0, int dstwidth, int dstheight,
 +int srcx0, int srcy0, int srcwidth, int srcheight)
 +{
 +   struct dri_context *ctx = dri_context(context);
 +   struct pipe_context *pipe = ctx-st-pipe;
 +   struct pipe_blit_info blit;
 +
 +   if (!dst || !src)
 +  return;
 +
 +   memset(blit, 0, sizeof(blit));
 +   blit.dst.resource = dst-texture;
 +   blit.dst.box.x = dstx0;
 +   blit.dst.box.y = dsty0;
 +   blit.dst.box.width = dstwidth;
 +   blit.dst.box.height = dstheight;
 +   blit.dst.box.depth = 1;
 +   blit.dst.format = dst-texture-format;
 +   blit.src.resource = src-texture;
 +   blit.src.box.x = srcx0;
 +   blit.src.box.y = srcy0;
 +   blit.src.box.width = srcwidth;
 +   blit.src.box.height = srcheight;
 +   blit.src.box.depth = 1;
 +   blit.src.format = src-texture-format;
 +   blit.mask = PIPE_MASK_RGBA;
 +   blit.filter = PIPE_TEX_FILTER_NEAREST;
 +
 +   pipe-blit(pipe, blit);
 +
 +   ctx-st-flush(ctx-st, 0, NULL);
 +   pipe-flush_resource(pipe, dst-texture);
 +}
 +
 +static void
  dri2_destroy_image(__DRIimage *img)
  {
 pipe_resource_reference(img-texture, NULL);
 @@ -1259,7 +1295,7 @@ dri2_destroy_image(__DRIimage *img)

  /* The extension is modified during runtime if DRI_PRIME is detected */
  static __DRIimageExtension dri2ImageExtension = {
 -.base = { __DRI_IMAGE, 6 },
 +.base = { __DRI_IMAGE, 9 },

  .createImageFromName  = dri2_create_image_from_name,
  .createImageFromRenderbuffer  = dri2_create_image_from_renderbuffer,
 @@ -1271,6 +1307,9 @@ static __DRIimageExtension dri2ImageExtension = {
  .createImageFromNames = dri2_from_names,
  .fromPlanar   = dri2_from_planar,
  .createImageFromTexture   = dri2_create_from_texture,
 +.createImageFromFds   = NULL,
 +.createImageFromDmaBufs   = NULL,
 +.blitImage= dri2_blit_image,
  };

  /*
 @@ -1325,8 +1364,6 @@ dri2_init_screen(__DRIscreen * sPriv)

if (drmGetCap(sPriv-fd, DRM_CAP_PRIME, cap) == 0 
(cap  DRM_PRIME_CAP_IMPORT)) {
 -
 - dri2ImageExtension.base.version = 8;
   dri2ImageExtension.createImageFromFds = dri2_from_fds;
   dri2ImageExtension.createImageFromDmaBufs = dri2_from_dma_bufs;
}
 --
 1.9.1

 ___
 mesa-dev mailing list
 mesa-dev@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/mesa-dev
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH V2 08/11] Gallium/dri2: implement blitImage

2014-05-29 Thread Axel Davy

On 29/05/2014 13:18, Marek Olšák wrote :

Hi Axel,

flush_resource should be called before ctx-st-flush.

Marek


Thanks, I'll update for the next version of the patch.

Axel Davy
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH V2 08/11] Gallium/dri2: implement blitImage

2014-05-28 Thread Axel Davy
Signed-off-by: Axel Davy axel.d...@ens.fr
---
 src/gallium/state_trackers/dri/drm/dri2.c | 43 ---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/dri/drm/dri2.c 
b/src/gallium/state_trackers/dri/drm/dri2.c
index eefbe42..f4db3d8 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -1251,6 +1251,42 @@ dri2_from_dma_bufs(__DRIscreen *screen,
 }
 
 static void
+dri2_blit_image(__DRIcontext *context, __DRIimage *dst, __DRIimage *src,
+int dstx0, int dsty0, int dstwidth, int dstheight,
+int srcx0, int srcy0, int srcwidth, int srcheight)
+{
+   struct dri_context *ctx = dri_context(context);
+   struct pipe_context *pipe = ctx-st-pipe;
+   struct pipe_blit_info blit;
+
+   if (!dst || !src)
+  return;
+
+   memset(blit, 0, sizeof(blit));
+   blit.dst.resource = dst-texture;
+   blit.dst.box.x = dstx0;
+   blit.dst.box.y = dsty0;
+   blit.dst.box.width = dstwidth;
+   blit.dst.box.height = dstheight;
+   blit.dst.box.depth = 1;
+   blit.dst.format = dst-texture-format;
+   blit.src.resource = src-texture;
+   blit.src.box.x = srcx0;
+   blit.src.box.y = srcy0;
+   blit.src.box.width = srcwidth;
+   blit.src.box.height = srcheight;
+   blit.src.box.depth = 1;
+   blit.src.format = src-texture-format;
+   blit.mask = PIPE_MASK_RGBA;
+   blit.filter = PIPE_TEX_FILTER_NEAREST;
+
+   pipe-blit(pipe, blit);
+
+   ctx-st-flush(ctx-st, 0, NULL);
+   pipe-flush_resource(pipe, dst-texture);
+}
+
+static void
 dri2_destroy_image(__DRIimage *img)
 {
pipe_resource_reference(img-texture, NULL);
@@ -1259,7 +1295,7 @@ dri2_destroy_image(__DRIimage *img)
 
 /* The extension is modified during runtime if DRI_PRIME is detected */
 static __DRIimageExtension dri2ImageExtension = {
-.base = { __DRI_IMAGE, 6 },
+.base = { __DRI_IMAGE, 9 },
 
 .createImageFromName  = dri2_create_image_from_name,
 .createImageFromRenderbuffer  = dri2_create_image_from_renderbuffer,
@@ -1271,6 +1307,9 @@ static __DRIimageExtension dri2ImageExtension = {
 .createImageFromNames = dri2_from_names,
 .fromPlanar   = dri2_from_planar,
 .createImageFromTexture   = dri2_create_from_texture,
+.createImageFromFds   = NULL,
+.createImageFromDmaBufs   = NULL,
+.blitImage= dri2_blit_image,
 };
 
 /*
@@ -1325,8 +1364,6 @@ dri2_init_screen(__DRIscreen * sPriv)
 
   if (drmGetCap(sPriv-fd, DRM_CAP_PRIME, cap) == 0 
   (cap  DRM_PRIME_CAP_IMPORT)) {
-
- dri2ImageExtension.base.version = 8;
  dri2ImageExtension.createImageFromFds = dri2_from_fds;
  dri2ImageExtension.createImageFromDmaBufs = dri2_from_dma_bufs;
   }
-- 
1.9.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev