i965: Add support for sampling from XYUV images
Add support to the i965 DRI driver to sample from XYUV8888 buffers. Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Reviewed-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:

committed by
Lionel Landwerlin

parent
65600d0946
commit
7cab8d3661
@@ -196,6 +196,7 @@ struct brw_sampler_prog_key_data {
|
||||
uint32_t yx_xuxv_image_mask;
|
||||
uint32_t xy_uxvx_image_mask;
|
||||
uint32_t ayuv_image_mask;
|
||||
uint32_t xyuv_image_mask;
|
||||
|
||||
/* Scale factor for each texture. */
|
||||
float scale_factors[32];
|
||||
|
@@ -963,6 +963,7 @@ brw_nir_apply_sampler_key(nir_shader *nir,
|
||||
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;
|
||||
tex_options.lower_xyuv_external = key_tex->xyuv_image_mask;
|
||||
|
||||
/* Setup array of scaling factors for each texture. */
|
||||
memcpy(&tex_options.scale_factors, &key_tex->scale_factors,
|
||||
|
@@ -270,6 +270,9 @@ brw_debug_recompile_sampler_key(struct brw_context *brw,
|
||||
found |= key_debug(brw, "ayuv image bound",
|
||||
old_key->ayuv_image_mask,
|
||||
key->ayuv_image_mask);
|
||||
found |= key_debug(brw, "xyuv image bound",
|
||||
old_key->xyuv_image_mask,
|
||||
key->xyuv_image_mask);
|
||||
|
||||
for (unsigned int i = 0; i < MAX_SAMPLERS; i++) {
|
||||
found |= key_debug(brw, "textureGather workarounds",
|
||||
@@ -432,6 +435,9 @@ brw_populate_sampler_prog_key_data(struct gl_context *ctx,
|
||||
case __DRI_IMAGE_COMPONENTS_AYUV:
|
||||
key->ayuv_image_mask |= 1 << s;
|
||||
break;
|
||||
case __DRI_IMAGE_COMPONENTS_XYUV:
|
||||
key->xyuv_image_mask |= 1 << s;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -302,6 +302,9 @@ static const struct intel_image_format intel_image_formats[] = {
|
||||
{ __DRI_IMAGE_FOURCC_AYUV, __DRI_IMAGE_COMPONENTS_AYUV, 1,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_ABGR8888, 4 } } },
|
||||
|
||||
{ __DRI_IMAGE_FOURCC_XYUV8888, __DRI_IMAGE_COMPONENTS_XYUV, 1,
|
||||
{ { 0, 0, 0, __DRI_IMAGE_FORMAT_XBGR8888, 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
|
||||
|
Reference in New Issue
Block a user