Re: [Mesa-dev] [PATCH v2 10/27] i965/miptree: Add a colorspace parameter to create_for_dri_image

2017-07-08 Thread Chad Versace
On Thu 29 Jun 2017, Jason Ekstrand wrote:
> The __DRI_FORMAT enums are all UNORM but we will frequently want sRGB
> when creating miptrees for renderbuffers.  This lets us specify.
> ---
>  src/mesa/drivers/dri/i965/intel_fbo.c |  3 ++-
>  src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 24 ++--
>  src/mesa/drivers/dri/i965/intel_mipmap_tree.h |  3 ++-
>  src/mesa/drivers/dri/i965/intel_tex_image.c   |  3 ++-
>  4 files changed, 28 insertions(+), 5 deletions(-)

I like this patch.
Reviewed-by: Chad Versace 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH v2 10/27] i965/miptree: Add a colorspace parameter to create_for_dri_image

2017-06-29 Thread Jason Ekstrand
The __DRI_FORMAT enums are all UNORM but we will frequently want sRGB
when creating miptrees for renderbuffers.  This lets us specify.
---
 src/mesa/drivers/dri/i965/intel_fbo.c |  3 ++-
 src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 24 ++--
 src/mesa/drivers/dri/i965/intel_mipmap_tree.h |  3 ++-
 src/mesa/drivers/dri/i965/intel_tex_image.c   |  3 ++-
 4 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/intel_fbo.c 
b/src/mesa/drivers/dri/i965/intel_fbo.c
index 4003e28..3670c2a 100644
--- a/src/mesa/drivers/dri/i965/intel_fbo.c
+++ b/src/mesa/drivers/dri/i965/intel_fbo.c
@@ -362,7 +362,8 @@ intel_image_target_renderbuffer_storage(struct gl_context 
*ctx,
 * buffer's content to the main buffer nor for invalidating the aux buffer's
 * content.
 */
-   irb->mt = intel_miptree_create_for_dri_image(brw, image, GL_TEXTURE_2D);
+   irb->mt = intel_miptree_create_for_dri_image(brw, image, GL_TEXTURE_2D,
+ISL_COLORSPACE_NONE);
if (!irb->mt)
   return;
 
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index f1ac074..6159fb3 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -1040,12 +1040,32 @@ miptree_create_for_planar_image(struct brw_context *brw,
 
 struct intel_mipmap_tree *
 intel_miptree_create_for_dri_image(struct brw_context *brw,
-   __DRIimage *image, GLenum target)
+   __DRIimage *image, GLenum target,
+   enum isl_colorspace colorspace)
 {
-   if (image->planar_format && image->planar_format->nplanes > 0)
+   if (image->planar_format && image->planar_format->nplanes > 0) {
+  assert(colorspace == ISL_COLORSPACE_NONE ||
+ colorspace == ISL_COLORSPACE_YUV);
   return miptree_create_for_planar_image(brw, image, target);
+   }
 
mesa_format format = image->format;
+   switch (colorspace) {
+   case ISL_COLORSPACE_NONE:
+  /* Keep the image format unmodified */
+  break;
+
+   case ISL_COLORSPACE_LINEAR:
+  format =_mesa_get_srgb_format_linear(format);
+  break;
+
+   case ISL_COLORSPACE_SRGB:
+  format =_mesa_get_linear_format_srgb(format);
+  break;
+
+   default:
+  unreachable("Inalid colorspace for non-planar image");
+   }
 
if (!brw->ctx.TextureFormatSupported[format]) {
   /* The texture storage paths in core Mesa detect if the driver does not
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h 
b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
index 4cc5c35..6668d31 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h
@@ -689,7 +689,8 @@ intel_miptree_create_for_bo(struct brw_context *brw,
 struct intel_mipmap_tree *
 intel_miptree_create_for_dri_image(struct brw_context *brw,
__DRIimage *image,
-   GLenum target);
+   GLenum target,
+   enum isl_colorspace colorspace);
 
 bool
 intel_update_winsys_renderbuffer_miptree(struct brw_context *intel,
diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c 
b/src/mesa/drivers/dri/i965/intel_tex_image.c
index abeb245..7765d1b 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_image.c
@@ -356,7 +356,8 @@ intel_image_target_texture_2d(struct gl_context *ctx, 
GLenum target,
   return;
}
 
-   mt = intel_miptree_create_for_dri_image(brw, image, target);
+   mt = intel_miptree_create_for_dri_image(brw, image, target,
+   ISL_COLORSPACE_NONE);
if (mt == NULL)
   return;
 
-- 
2.5.0.400.gff86faf

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