Re: [Mesa-dev] [PATCH 21/30] i965/screen: Use ISL for doing image import checks

2017-08-04 Thread Jason Ekstrand
On Fri, Aug 4, 2017 at 2:16 AM, Rainer Hochecker 
wrote:

> This seems to breaks exporting 16bit vaapi images via drm buffers
>

Yes, I'm aware of the problem and there are two patches on the list which
should fix it:

https://patchwork.freedesktop.org/patch/170051/
https://patchwork.freedesktop.org/patch/170052/
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 21/30] i965/screen: Use ISL for doing image import checks

2017-08-04 Thread Rainer Hochecker

This seems to breaks exporting 16bit vaapi images via drm buffers
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 21/30] i965/screen: Use ISL for doing image import checks

2017-06-28 Thread Chad Versace
On Fri 16 Jun 2017, Jason Ekstrand wrote:
> ---
>  src/mesa/drivers/dri/i965/intel_screen.c | 32 
> 
>  1 file changed, 28 insertions(+), 4 deletions(-)

This patch adds more code, but it's code I trust.
Reviewed-by: Chad Versace 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 21/30] i965/screen: Use ISL for doing image import checks

2017-06-16 Thread Jason Ekstrand
---
 src/mesa/drivers/dri/i965/intel_screen.c | 32 
 1 file changed, 28 insertions(+), 4 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_screen.c 
b/src/mesa/drivers/dri/i965/intel_screen.c
index e5acd31..a896bc4 100644
--- a/src/mesa/drivers/dri/i965/intel_screen.c
+++ b/src/mesa/drivers/dri/i965/intel_screen.c
@@ -857,8 +857,8 @@ intel_create_image_from_fds_common(__DRIscreen *dri_screen,
struct intel_screen *screen = dri_screen->driverPrivate;
struct intel_image_format *f;
__DRIimage *image;
-   unsigned tiled_height;
int i, index;
+   bool ok;
 
if (fds == NULL || num_fds < 1)
   return NULL;
@@ -909,7 +909,6 @@ intel_create_image_from_fds_common(__DRIscreen *dri_screen,
   image->modifier = modifier;
else
   image->modifier = tiling_to_modifier(image->bo->tiling_mode);
-   tiled_height = get_tiled_height(image->modifier, height);
 
int size = 0;
for (i = 0; i < f->nplanes; i++) {
@@ -917,8 +916,33 @@ intel_create_image_from_fds_common(__DRIscreen *dri_screen,
   image->offsets[index] = offsets[index];
   image->strides[index] = strides[index];
 
-  const int plane_height = tiled_height >> f->planes[i].height_shift;
-  const int end = offsets[index] + plane_height * strides[index];
+  const struct isl_drm_modifier_info *mod_info =
+ isl_drm_modifier_get_info(image->modifier);
+
+  mesa_format format = driImageFormatToGLFormat(f->planes[i].dri_format);
+
+  struct isl_surf surf;
+  ok = isl_surf_init(>isl_dev, ,
+ .dim = ISL_SURF_DIM_2D,
+ .format = brw_isl_format_for_mesa_format(format),
+ .width = image->width >> f->planes[i].width_shift,
+ .height = image->height >> f->planes[i].height_shift,
+ .depth = 1,
+ .levels = 1,
+ .array_len = 1,
+ .samples = 1,
+ .row_pitch = strides[index],
+ .usage = ISL_SURF_USAGE_RENDER_TARGET_BIT |
+  ISL_SURF_USAGE_TEXTURE_BIT |
+  ISL_SURF_USAGE_STORAGE_BIT,
+ .tiling_flags = (1 << mod_info->tiling));
+  if (!ok) {
+ brw_bo_unreference(image->bo);
+ free(image);
+ return NULL;
+  }
+
+  const int end = offsets[index] + surf.size;
   if (size < end)
  size = end;
}
-- 
2.5.0.400.gff86faf

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