}
static void
-ironlake_pp_initialize(VADriverContextP ctx,
- VASurfaceID surface,
- int input,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- int pp_index)
+ironlake_pp_initialize(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ int input,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ int pp_index
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
pp_module = &pp_context->pp_modules[pp_index];
if (pp_module->initialize)
- pp_module->initialize(ctx, surface, input, srcw, srch, destw, desth);
+ pp_module->initialize(ctx, surface, input,
+ src_rect->width, src_rect->height,
+ dst_rect->width, dst_rect->height);
}
static void
-ironlake_post_processing(VADriverContextP ctx,
- VASurfaceID surface,
- int input,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- int pp_index)
+ironlake_post_processing(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ int input,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ int pp_index
+)
{
- ironlake_pp_initialize(ctx, surface, input,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- pp_index);
+ ironlake_pp_initialize(ctx, surface, input, src_rect, dst_rect, pp_index);
ironlake_pp_states_setup(ctx);
ironlake_pp_pipeline_setup(ctx);
}
static void
-gen6_pp_initialize(VADriverContextP ctx,
- VASurfaceID surface,
- int input,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- int pp_index)
+gen6_pp_initialize(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ int input,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ int pp_index
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
pp_module = &pp_context->pp_modules[pp_index];
if (pp_module->initialize)
- pp_module->initialize(ctx, surface, input, srcw, srch, destw, desth);
+ pp_module->initialize(ctx, surface, input,
+ src_rect->width, src_rect->height,
+ dst_rect->width, dst_rect->height);
}
static void
}
static void
-gen6_post_processing(VADriverContextP ctx,
- VASurfaceID surface,
- int input,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- int pp_index)
+gen6_post_processing(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ int input,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ int pp_index
+)
{
- gen6_pp_initialize(ctx, surface, input,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- pp_index);
+ gen6_pp_initialize(ctx, surface, input, src_rect, dst_rect, pp_index);
gen6_pp_states_setup(ctx);
gen6_pp_pipeline_setup(ctx);
}
static void
-i965_post_processing_internal(VADriverContextP ctx,
- VASurfaceID surface,
- int input,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- int pp_index)
+i965_post_processing_internal(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ int input,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ int pp_index
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
if (IS_GEN6(i965->intel.device_id) ||
IS_GEN7(i965->intel.device_id))
- gen6_post_processing(ctx, surface, input,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- pp_index);
+ gen6_post_processing(ctx, surface, input, src_rect, dst_rect, pp_index);
else
- ironlake_post_processing(ctx, surface, input,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
+ ironlake_post_processing(ctx, surface, input, src_rect, dst_rect,
pp_index);
}
void
-i965_post_processing(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- unsigned int flag)
+i965_post_processing(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ unsigned int flags
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
if (i965->render_state.interleaved_uv) {
int internal_input = 0;
- if (flag & I965_PP_FLAG_DEINTERLACING) {
+ if (flags & I965_PP_FLAG_DEINTERLACING) {
i965_post_processing_internal(ctx, surface, internal_input,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
+ src_rect, dst_rect,
PP_NV12_DNDI);
internal_input = 1;
}
- if (flag & I965_PP_FLAG_AVS) {
+ if (flags & I965_PP_FLAG_AVS) {
i965_post_processing_internal(ctx, surface, internal_input,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
+ src_rect, dst_rect,
PP_NV12_AVS);
}
}
}
static void
-i965_render_upload_vertex(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+i965_render_upload_vertex(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state;
float u1, v1, u2, v2;
int i, width, height;
- int box_x1 = dest_region->x + destx;
- int box_y1 = dest_region->y + desty;
- int box_x2 = box_x1 + destw;
- int box_y2 = box_y1 + desth;
+ int box_x1 = dest_region->x + dst_rect->x;
+ int box_y1 = dest_region->y + dst_rect->y;
+ int box_x2 = box_x1 + dst_rect->width;
+ int box_y2 = box_y1 + dst_rect->height;
obj_surface = SURFACE(surface);
assert(surface);
width = obj_surface->orig_width;
height = obj_surface->orig_height;
- u1 = (float)srcx / width;
- v1 = (float)srcy / height;
- u2 = (float)(srcx + srcw) / width;
- v2 = (float)(srcy + srch) / height;
+ u1 = (float)src_rect->x / width;
+ v1 = (float)src_rect->y / height;
+ u2 = (float)(src_rect->x + src_rect->width) / width;
+ v2 = (float)(src_rect->y + src_rect->height) / height;
dri_bo_map(render_state->vb.vertex_buffer, 1);
assert(render_state->vb.vertex_buffer->virtual);
}
static void
-i965_surface_render_state_setup(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+i965_surface_render_state_setup(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
i965_render_wm_unit(ctx);
i965_render_cc_viewport(ctx);
i965_render_cc_unit(ctx);
- i965_render_upload_vertex(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ i965_render_upload_vertex(ctx, surface, src_rect, dst_rect);
i965_render_upload_constants(ctx);
}
static void
-i965_subpic_render_state_setup(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+i965_subpic_render_state_setup(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
i965_render_vs_unit(ctx);
i965_render_sf_unit(ctx);
i965_subpic_render_wm_unit(ctx);
i965_render_cc_viewport(ctx);
i965_subpic_render_cc_unit(ctx);
-
- VARectangle output_rect;
- output_rect.x = destx;
- output_rect.y = desty;
- output_rect.width = destw;
- output_rect.height = desth;
- i965_subpic_render_upload_vertex(ctx, surface, &output_rect);
+ i965_subpic_render_upload_vertex(ctx, surface, dst_rect);
}
}
static void
-i965_render_put_surface(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- unsigned int flag)
+i965_render_put_surface(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ unsigned int flags
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
i965_render_initialize(ctx);
- i965_surface_render_state_setup(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ i965_surface_render_state_setup(ctx, surface, src_rect, dst_rect);
i965_surface_render_pipeline_setup(ctx);
intel_batchbuffer_flush(batch);
}
static void
-i965_render_put_subpicture(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+i965_render_put_subpicture(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
assert(obj_subpic);
i965_render_initialize(ctx);
- i965_subpic_render_state_setup(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ i965_subpic_render_state_setup(ctx, surface, src_rect, dst_rect);
i965_subpic_render_pipeline_setup(ctx);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(batch);
}
static void
-gen6_render_setup_states(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+gen6_render_setup_states(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
i965_render_dest_surface_state(ctx, 0);
i965_render_src_surfaces_state(ctx, surface);
gen6_render_blend_state(ctx);
gen6_render_depth_stencil_state(ctx);
i965_render_upload_constants(ctx);
- i965_render_upload_vertex(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ i965_render_upload_vertex(ctx, surface, src_rect, dst_rect);
}
static void
}
static void
-gen6_render_put_surface(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- unsigned int flag)
+gen6_render_put_surface(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ unsigned int flags
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
gen6_render_initialize(ctx);
- gen6_render_setup_states(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ gen6_render_setup_states(ctx, surface, src_rect, dst_rect);
i965_clear_dest_region(ctx);
gen6_render_emit_states(ctx, PS_KERNEL);
intel_batchbuffer_flush(batch);
}
static void
-gen6_subpicture_render_setup_states(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+gen6_subpicture_render_setup_states(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
- VARectangle output_rect;
-
- output_rect.x = destx;
- output_rect.y = desty;
- output_rect.width = destw;
- output_rect.height = desth;
-
i965_render_dest_surface_state(ctx, 0);
i965_subpic_render_src_surfaces_state(ctx, surface);
i965_render_sampler(ctx);
gen6_render_color_calc_state(ctx);
gen6_subpicture_render_blend_state(ctx);
gen6_render_depth_stencil_state(ctx);
- i965_subpic_render_upload_vertex(ctx, surface, &output_rect);
+ i965_subpic_render_upload_vertex(ctx, surface, dst_rect);
}
static void
-gen6_render_put_subpicture(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+gen6_render_put_subpicture(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
assert(obj_subpic);
gen6_render_initialize(ctx);
- gen6_subpicture_render_setup_states(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ gen6_subpicture_render_setup_states(ctx, surface, src_rect, dst_rect);
gen6_render_emit_states(ctx, PS_SUBPIC_KERNEL);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(batch);
}
static void
-gen7_render_setup_states(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+gen7_render_setup_states(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
i965_render_dest_surface_state(ctx, 0);
i965_render_src_surfaces_state(ctx, surface);
gen7_render_blend_state(ctx);
gen7_render_depth_stencil_state(ctx);
i965_render_upload_constants(ctx);
- i965_render_upload_vertex(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ i965_render_upload_vertex(ctx, surface, src_rect, dst_rect);
}
static void
}
static void
-gen7_render_put_surface(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- unsigned int flag)
+gen7_render_put_surface(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ unsigned int flags
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
gen7_render_initialize(ctx);
- gen7_render_setup_states(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ gen7_render_setup_states(ctx, surface, src_rect, dst_rect);
i965_clear_dest_region(ctx);
gen7_render_emit_states(ctx, PS_KERNEL);
intel_batchbuffer_flush(batch);
}
static void
-gen7_subpicture_render_setup_states(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+gen7_subpicture_render_setup_states(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
- VARectangle output_rect;
-
- output_rect.x = destx;
- output_rect.y = desty;
- output_rect.width = destw;
- output_rect.height = desth;
-
i965_render_dest_surface_state(ctx, 0);
i965_subpic_render_src_surfaces_state(ctx, surface);
i965_render_sampler(ctx);
gen7_render_color_calc_state(ctx);
gen7_subpicture_render_blend_state(ctx);
gen7_render_depth_stencil_state(ctx);
- i965_subpic_render_upload_vertex(ctx, surface, &output_rect);
+ i965_subpic_render_upload_vertex(ctx, surface, dst_rect);
}
static void
-gen7_render_put_subpicture(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+gen7_render_put_subpicture(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = i965->batch;
assert(obj_subpic);
gen7_render_initialize(ctx);
- gen7_subpicture_render_setup_states(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ gen7_subpicture_render_setup_states(ctx, surface, src_rect, dst_rect);
gen7_render_emit_states(ctx, PS_SUBPIC_KERNEL);
i965_render_upload_image_palette(ctx, obj_subpic->image, 0xff);
intel_batchbuffer_flush(batch);
/*
* global functions
*/
+
void
-intel_render_put_surface(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth,
- unsigned int flag)
+intel_render_put_surface(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect,
+ unsigned int flags
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
- i965_post_processing(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- flag);
+ i965_post_processing(ctx, surface, src_rect, dst_rect, flags);
if (IS_GEN7(i965->intel.device_id))
- gen7_render_put_surface(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- flag);
+ gen7_render_put_surface(ctx, surface, src_rect, dst_rect, flags);
else if (IS_GEN6(i965->intel.device_id))
- gen6_render_put_surface(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- flag);
+ gen6_render_put_surface(ctx, surface, src_rect, dst_rect, flags);
else
- i965_render_put_surface(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth,
- flag);
+ i965_render_put_surface(ctx, surface, src_rect, dst_rect, flags);
}
void
-intel_render_put_subpicture(VADriverContextP ctx,
- VASurfaceID surface,
- short srcx,
- short srcy,
- unsigned short srcw,
- unsigned short srch,
- short destx,
- short desty,
- unsigned short destw,
- unsigned short desth)
+intel_render_put_subpicture(
+ VADriverContextP ctx,
+ VASurfaceID surface,
+ const VARectangle *src_rect,
+ const VARectangle *dst_rect
+)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
if (IS_GEN7(i965->intel.device_id))
- gen7_render_put_subpicture(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ gen7_render_put_subpicture(ctx, surface, src_rect, dst_rect);
else if (IS_GEN6(i965->intel.device_id))
- gen6_render_put_subpicture(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ gen6_render_put_subpicture(ctx, surface, src_rect, dst_rect);
else
- i965_render_put_subpicture(ctx, surface,
- srcx, srcy, srcw, srch,
- destx, desty, destw, desth);
+ i965_render_put_subpicture(ctx, surface, src_rect, dst_rect);
}
Bool