[Libva] [PATCH 3/9] vpp: gen7/8/9: add yuv to rgb conversion matrix to registers send to EUs
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Tue Nov 3 08:56:17 PST 2015
---
src/gen8_post_processing.c | 12 ++++++------
src/i965_post_processing.c | 16 ++++++++--------
src/i965_post_processing.h | 45 +++++++++++++++++++++++++++++++++++----------
3 files changed, 49 insertions(+), 24 deletions(-)
diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index a5e036d..569232d 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -713,10 +713,10 @@ gen7_pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context,
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)pp_context->private_context;
struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- pp_inline_parameter->grf7.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
- pp_inline_parameter->grf7.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
- pp_inline_parameter->grf7.constant_0 = 0xffffffff;
- pp_inline_parameter->grf7.sampler_load_main_video_x_scaling_step = pp_avs_context->horiz_range / pp_avs_context->src_w;
+ pp_inline_parameter->grf9.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
+ pp_inline_parameter->grf9.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
+ pp_inline_parameter->grf9.constant_0 = 0xffffffff;
+ pp_inline_parameter->grf9.sampler_load_main_video_x_scaling_step = pp_avs_context->horiz_range / pp_avs_context->src_w;
return 0;
}
@@ -1187,7 +1187,7 @@ gen8_pp_interface_descriptor_table(VADriverContextP ctx,
desc->desc4.binding_table_pointer = (BINDING_TABLE_OFFSET >> 5);
desc->desc5.constant_urb_entry_read_offset = 0;
- desc->desc5.constant_urb_entry_read_length = 6; /* grf 1-6 */
+ desc->desc5.constant_urb_entry_read_length = 8; /* grf 1-8 */
dri_bo_unmap(bo);
pp_context->idrt.num_interface_descriptors++;
@@ -1201,7 +1201,7 @@ gen8_pp_upload_constants(VADriverContextP ctx,
unsigned char *constant_buffer;
int param_size;
- assert(sizeof(struct gen7_pp_static_parameter) == 192);
+ assert(sizeof(struct gen7_pp_static_parameter) == 256);
param_size = sizeof(struct gen7_pp_static_parameter);
diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c
index 0d145d8..e1d96d4 100755
--- a/src/i965_post_processing.c
+++ b/src/i965_post_processing.c
@@ -3029,10 +3029,10 @@ gen7_pp_avs_set_block_parameter(struct i965_post_processing_context *pp_context,
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)pp_context->private_context;
struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- pp_inline_parameter->grf7.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
- pp_inline_parameter->grf7.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
- pp_inline_parameter->grf7.constant_0 = 0xffffffff;
- pp_inline_parameter->grf7.sampler_load_main_video_x_scaling_step = pp_avs_context->horiz_range / pp_avs_context->src_w;
+ pp_inline_parameter->grf9.destination_block_horizontal_origin = x * 16 + pp_avs_context->dest_x;
+ pp_inline_parameter->grf9.destination_block_vertical_origin = y * 16 + pp_avs_context->dest_y;
+ pp_inline_parameter->grf9.constant_0 = 0xffffffff;
+ pp_inline_parameter->grf9.sampler_load_main_video_x_scaling_step = pp_avs_context->horiz_range / pp_avs_context->src_w;
return 0;
}
@@ -3736,8 +3736,8 @@ gen7_pp_dndi_set_block_parameter(struct i965_post_processing_context *pp_context
{
struct gen7_pp_inline_parameter *pp_inline_parameter = pp_context->pp_inline_parameter;
- pp_inline_parameter->grf7.destination_block_horizontal_origin = x * 16;
- pp_inline_parameter->grf7.destination_block_vertical_origin = y * 4;
+ pp_inline_parameter->grf9.destination_block_horizontal_origin = x * 16;
+ pp_inline_parameter->grf9.destination_block_vertical_origin = y * 4;
return 0;
}
@@ -4421,7 +4421,7 @@ gen6_pp_interface_descriptor_table(VADriverContextP ctx,
desc->desc4.constant_urb_entry_read_offset = 0;
if (IS_GEN7(i965->intel.device_info))
- desc->desc4.constant_urb_entry_read_length = 6; /* grf 1-6 */
+ desc->desc4.constant_urb_entry_read_length = 8; /* grf 1-8 */
else
desc->desc4.constant_urb_entry_read_length = 4; /* grf 1-4 */
@@ -4450,7 +4450,7 @@ gen6_pp_upload_constants(VADriverContextP ctx,
int param_size;
assert(sizeof(struct pp_static_parameter) == 128);
- assert(sizeof(struct gen7_pp_static_parameter) == 192);
+ assert(sizeof(struct gen7_pp_static_parameter) == 256);
if (IS_GEN7(i965->intel.device_info))
param_size = sizeof(struct gen7_pp_static_parameter);
diff --git a/src/i965_post_processing.h b/src/i965_post_processing.h
index 477f0ca..63e678d 100755
--- a/src/i965_post_processing.h
+++ b/src/i965_post_processing.h
@@ -422,33 +422,58 @@ struct gen7_pp_static_parameter
float sampler_load_horizontal_frame_origin;
unsigned int padx[7];
} grf6;
+
+ struct {
+ /* r7.0 -> r7.3 */
+ float coef_ry;
+ float coef_ru;
+ float coef_rv;
+ float coef_yd;
+
+ /* r7.4 -> r7.7 */
+ float coef_gy;
+ float coef_gu;
+ float coef_gv;
+ float coef_ud;
+ } grf7;
+
+ struct {
+ /* r8.0 -> r8.3 */
+ float coef_by;
+ float coef_bu;
+ float coef_bv;
+ float coef_vd;
+
+ /* r8.4 -> r8.7 */
+ unsigned int padx[4];
+ } grf8;
};
struct gen7_pp_inline_parameter
{
struct {
- /* r7.0 */
+ /* r9.0 */
unsigned int destination_block_horizontal_origin:16;
unsigned int destination_block_vertical_origin:16;
- /* r7.1: 0xffffffff */
+ /* r9.1: 0xffffffff */
unsigned int constant_0;
- /* r7.2 */
+ /* r9.2 */
unsigned int pad0;
- /* r7.3 */
+ /* r9.3 */
unsigned int pad1;
- /* r7.4 */
+ /* r9.4 */
float sampler_load_main_video_x_scaling_step;
- /* r7.5 */
+ /* r9.5 */
unsigned int pad2;
- /* r7.6: must be zero */
+ /* r9.6: must be zero */
unsigned int avs_vertical_block_number;
- /* r7.7: 0 */
+ /* r9.7: 0 */
unsigned int group_id_number;
- } grf7;
+ } grf9;
struct {
unsigned int padx[8];
- } grf8;
+ } grf10;
};
struct i965_post_processing_context
--
2.6.2
More information about the Libva
mailing list