diff options
author | Lionel Landwerlin <[email protected]> | 2018-11-08 17:26:36 +0000 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2018-11-12 13:22:54 +0000 |
commit | 89785e2d56e7fa88efa79d1981f7283ee65a458e (patch) | |
tree | 5ebacdf18a7265e92ddb72fa3e9288c0ce74f156 | |
parent | 252ca7b43fa0516548dbba86823e03c153dc3da6 (diff) |
i965: add support for sampling from AYUV
Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Tapani Pälli <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
-rw-r--r-- | src/intel/compiler/brw_compiler.h | 1 | ||||
-rw-r--r-- | src/intel/compiler/brw_nir.c | 1 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.c | 3 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index d8c9499065f..8adc1ff8115 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -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; }; /** diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c index cf5a4a96d67..26a5ea04605 100644 --- a/src/intel/compiler/brw_nir.c +++ b/src/intel/compiler/brw_nir.c @@ -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"); diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 139ca910f9f..fc64f38c156 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -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; } diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index a205a49a1bd..8838f977bb6 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -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 |