i965: add support for sampling from AYUV

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Eric Engestrom <eric.engestrom@intel.com>
This commit is contained in:
Lionel Landwerlin 2018-11-08 17:26:36 +00:00
parent 252ca7b43f
commit 89785e2d56
4 changed files with 11 additions and 0 deletions

View File

@ -195,6 +195,7 @@ struct brw_sampler_prog_key_data {
uint32_t y_uv_image_mask;
uint32_t yx_xuxv_image_mask;
uint32_t xy_uxvx_image_mask;
uint32_t ayuv_image_mask;
};
/**

View File

@ -877,6 +877,7 @@ brw_nir_apply_sampler_key(nir_shader *nir,
tex_options.lower_y_u_v_external = key_tex->y_u_v_image_mask;
tex_options.lower_yx_xuxv_external = key_tex->yx_xuxv_image_mask;
tex_options.lower_xy_uxvx_external = key_tex->xy_uxvx_image_mask;
tex_options.lower_ayuv_external = key_tex->ayuv_image_mask;
if (nir_lower_tex(nir, &tex_options)) {
nir_validate_shader(nir, "after nir_lower_tex");

View File

@ -263,6 +263,9 @@ brw_debug_recompile_sampler_key(struct brw_context *brw,
found |= key_debug(brw, "xy_uxvx image bound",
old_key->xy_uxvx_image_mask,
key->xy_uxvx_image_mask);
found |= key_debug(brw, "ayuv image bound",
old_key->ayuv_image_mask,
key->ayuv_image_mask);
for (unsigned int i = 0; i < MAX_SAMPLERS; i++) {
@ -412,6 +415,9 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
case __DRI_IMAGE_COMPONENTS_Y_UXVX:
key->xy_uxvx_image_mask |= 1 << s;
break;
case __DRI_IMAGE_COMPONENTS_AYUV:
key->ayuv_image_mask |= 1 << s;
break;
default:
break;
}

View File

@ -286,6 +286,9 @@ static const struct intel_image_format intel_image_formats[] = {
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_R8, 1 },
{ 1, 1, 0, __DRI_IMAGE_FORMAT_GR88, 2 } } },
{ __DRI_IMAGE_FOURCC_AYUV, __DRI_IMAGE_COMPONENTS_AYUV, 1,
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_ABGR8888, 4 } } },
/* For YUYV and UYVY buffers, we set up two overlapping DRI images
* and treat them as planar buffers in the compositors.
* Plane 0 is GR88 and samples YU or YV pairs and places Y into