mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 15:38:09 +02:00
i965: pass wanted format to intel_miptree_create_for_dri_image
Changeb3a44ae7a4caused regressions on Android where DRI and renderbuffer can disagree on the format being used. This patch removes the colorspace parameter and instead we pass renderbuffer format. For non-winsys images we still do srgb/linear modification in same manner as changeb3a44ae7a4wanted but take format from renderbuffer instead of DRI image. This patch fixes regressions seen with following test sets: dEQP-EGL.functional.color_clears* dEQP-EGL.functional.render* Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102999 Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
c4d1a199f8
commit
0351638284
5 changed files with 7 additions and 40 deletions
|
|
@ -1596,21 +1596,9 @@ intel_update_image_buffer(struct brw_context *intel,
|
|||
if (last_mt && last_mt->bo == buffer->bo)
|
||||
return;
|
||||
|
||||
enum isl_colorspace colorspace;
|
||||
switch (_mesa_get_format_color_encoding(intel_rb_format(rb))) {
|
||||
case GL_SRGB:
|
||||
colorspace = ISL_COLORSPACE_SRGB;
|
||||
break;
|
||||
case GL_LINEAR:
|
||||
colorspace = ISL_COLORSPACE_LINEAR;
|
||||
break;
|
||||
default:
|
||||
unreachable("Invalid color encoding");
|
||||
}
|
||||
|
||||
struct intel_mipmap_tree *mt =
|
||||
intel_miptree_create_for_dri_image(intel, buffer, GL_TEXTURE_2D,
|
||||
colorspace, true);
|
||||
intel_rb_format(rb), true);
|
||||
if (!mt)
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ intel_image_target_renderbuffer_storage(struct gl_context *ctx,
|
|||
* content.
|
||||
*/
|
||||
irb->mt = intel_miptree_create_for_dri_image(brw, image, GL_TEXTURE_2D,
|
||||
ISL_COLORSPACE_NONE, false);
|
||||
image->format, false);
|
||||
if (!irb->mt)
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -959,36 +959,15 @@ create_ccs_buf_for_image(struct brw_context *brw,
|
|||
struct intel_mipmap_tree *
|
||||
intel_miptree_create_for_dri_image(struct brw_context *brw,
|
||||
__DRIimage *image, GLenum target,
|
||||
enum isl_colorspace colorspace,
|
||||
mesa_format format,
|
||||
bool is_winsys_image)
|
||||
{
|
||||
if (image->planar_format && image->planar_format->nplanes > 1) {
|
||||
assert(colorspace == ISL_COLORSPACE_NONE ||
|
||||
colorspace == ISL_COLORSPACE_YUV);
|
||||
if (image->planar_format && image->planar_format->nplanes > 1)
|
||||
return miptree_create_for_planar_image(brw, image, target);
|
||||
}
|
||||
|
||||
if (image->planar_format)
|
||||
assert(image->planar_format->planes[0].dri_format == image->dri_format);
|
||||
|
||||
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
|
||||
* support the user-requested format, and then searches for a
|
||||
|
|
|
|||
|
|
@ -407,7 +407,7 @@ struct intel_mipmap_tree *
|
|||
intel_miptree_create_for_dri_image(struct brw_context *brw,
|
||||
__DRIimage *image,
|
||||
GLenum target,
|
||||
enum isl_colorspace colorspace,
|
||||
mesa_format format,
|
||||
bool is_winsys_image);
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -524,8 +524,8 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target,
|
|||
return;
|
||||
}
|
||||
|
||||
mt = intel_miptree_create_for_dri_image(brw, image, target,
|
||||
ISL_COLORSPACE_NONE, false);
|
||||
mt = intel_miptree_create_for_dri_image(brw, image, target, image->format,
|
||||
false);
|
||||
if (mt == NULL)
|
||||
return;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue