Commit 334eaa3f authored by Xiang, Haihao's avatar Xiang, Haihao

i965_drv_video: move pp_context to i965_driver_data and make it a pointer.

Later media_state/render_state/pp_context will be moved to object_context.
Signed-off-by: default avatarXiang, Haihao <haihao.xiang@intel.com>
parent 68d0d264
...@@ -1369,6 +1369,9 @@ i965_Init(VADriverContextP ctx) ...@@ -1369,6 +1369,9 @@ i965_Init(VADriverContextP ctx)
if (i965_media_init(ctx) == False) if (i965_media_init(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN; return VA_STATUS_ERROR_UNKNOWN;
if (i965_post_processing_init(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
if (i965_render_init(ctx) == False) if (i965_render_init(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN; return VA_STATUS_ERROR_UNKNOWN;
...@@ -2016,6 +2019,9 @@ i965_Terminate(VADriverContextP ctx) ...@@ -2016,6 +2019,9 @@ i965_Terminate(VADriverContextP ctx)
if (i965_render_terminate(ctx) == False) if (i965_render_terminate(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN; return VA_STATUS_ERROR_UNKNOWN;
if (i965_post_processing_terminate(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN;
if (i965_media_terminate(ctx) == False) if (i965_media_terminate(ctx) == False)
return VA_STATUS_ERROR_UNKNOWN; return VA_STATUS_ERROR_UNKNOWN;
......
...@@ -167,6 +167,7 @@ struct i965_driver_data ...@@ -167,6 +167,7 @@ struct i965_driver_data
struct object_heap subpic_heap; struct object_heap subpic_heap;
struct i965_media_state media_state; struct i965_media_state media_state;
struct i965_render_state render_state; struct i965_render_state render_state;
void *pp_context;
}; };
#define NEW_CONFIG_ID() object_heap_allocate(&i965->config_heap); #define NEW_CONFIG_ID() object_heap_allocate(&i965->config_heap);
......
...@@ -471,7 +471,7 @@ static void ...@@ -471,7 +471,7 @@ static void
ironlake_pp_states_setup(VADriverContextP ctx) ironlake_pp_states_setup(VADriverContextP ctx)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
ironlake_pp_surface_state(pp_context); ironlake_pp_surface_state(pp_context);
ironlake_pp_binding_table(pp_context); ironlake_pp_binding_table(pp_context);
...@@ -583,7 +583,7 @@ static void ...@@ -583,7 +583,7 @@ static void
ironlake_pp_pipeline_setup(VADriverContextP ctx) ironlake_pp_pipeline_setup(VADriverContextP ctx)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
intel_batchbuffer_start_atomic(ctx, 0x1000); intel_batchbuffer_start_atomic(ctx, 0x1000);
intel_batchbuffer_emit_mi_flush(ctx); intel_batchbuffer_emit_mi_flush(ctx);
...@@ -621,7 +621,7 @@ ironlake_pp_null_initialize(VADriverContextP ctx, VASurfaceID surface, int input ...@@ -621,7 +621,7 @@ ironlake_pp_null_initialize(VADriverContextP ctx, VASurfaceID surface, int input
unsigned short destw, unsigned short desth) unsigned short destw, unsigned short desth)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
struct object_surface *obj_surface; struct object_surface *obj_surface;
/* surface */ /* surface */
...@@ -672,7 +672,7 @@ ironlake_pp_nv12_load_save_initialize(VADriverContextP ctx, VASurfaceID surface, ...@@ -672,7 +672,7 @@ ironlake_pp_nv12_load_save_initialize(VADriverContextP ctx, VASurfaceID surface,
unsigned short destw, unsigned short desth) unsigned short destw, unsigned short desth)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
struct pp_load_save_context *pp_load_save_context = (struct pp_load_save_context *)&pp_context->private_context; struct pp_load_save_context *pp_load_save_context = (struct pp_load_save_context *)&pp_context->private_context;
struct object_surface *obj_surface; struct object_surface *obj_surface;
struct i965_surface_state *ss; struct i965_surface_state *ss;
...@@ -855,7 +855,7 @@ ironlake_pp_nv12_scaling_initialize(VADriverContextP ctx, VASurfaceID surface, i ...@@ -855,7 +855,7 @@ ironlake_pp_nv12_scaling_initialize(VADriverContextP ctx, VASurfaceID surface, i
unsigned short destw, unsigned short desth) unsigned short destw, unsigned short desth)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
struct pp_scaling_context *pp_scaling_context = (struct pp_scaling_context *)&pp_context->private_context; struct pp_scaling_context *pp_scaling_context = (struct pp_scaling_context *)&pp_context->private_context;
struct object_surface *obj_surface; struct object_surface *obj_surface;
struct i965_sampler_state *sampler_state; struct i965_sampler_state *sampler_state;
...@@ -1153,7 +1153,7 @@ ironlake_pp_nv12_avs_initialize(VADriverContextP ctx, VASurfaceID surface, int i ...@@ -1153,7 +1153,7 @@ ironlake_pp_nv12_avs_initialize(VADriverContextP ctx, VASurfaceID surface, int i
unsigned short destw, unsigned short desth) unsigned short destw, unsigned short desth)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->private_context; struct pp_avs_context *pp_avs_context = (struct pp_avs_context *)&pp_context->private_context;
struct object_surface *obj_surface; struct object_surface *obj_surface;
struct i965_surface_state *ss; struct i965_surface_state *ss;
...@@ -1525,7 +1525,7 @@ void ironlake_pp_nv12_dndi_initialize(VADriverContextP ctx, VASurfaceID surface, ...@@ -1525,7 +1525,7 @@ void ironlake_pp_nv12_dndi_initialize(VADriverContextP ctx, VASurfaceID surface,
unsigned short destw, unsigned short desth) unsigned short destw, unsigned short desth)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
struct pp_dndi_context *pp_dndi_context = (struct pp_dndi_context *)&pp_context->private_context; struct pp_dndi_context *pp_dndi_context = (struct pp_dndi_context *)&pp_context->private_context;
struct object_surface *obj_surface; struct object_surface *obj_surface;
struct i965_surface_state *ss; struct i965_surface_state *ss;
...@@ -1803,7 +1803,7 @@ ironlake_pp_initialize(VADriverContextP ctx, ...@@ -1803,7 +1803,7 @@ ironlake_pp_initialize(VADriverContextP ctx,
int pp_index) int pp_index)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
struct pp_module *pp_module; struct pp_module *pp_module;
dri_bo *bo; dri_bo *bo;
int i; int i;
...@@ -1946,13 +1946,73 @@ i965_post_processing(VADriverContextP ctx, ...@@ -1946,13 +1946,73 @@ i965_post_processing(VADriverContextP ctx,
} }
} }
void Bool
i965_post_processing_once_init(VADriverContextP ctx) i965_post_processing_terminate(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = i965->pp_context;
int i;
if (pp_context) {
dri_bo_unreference(pp_context->curbe.bo);
pp_context->curbe.bo = NULL;
for (i = 0; i < MAX_PP_SURFACES; i++) {
dri_bo_unreference(pp_context->surfaces[i].ss_bo);
pp_context->surfaces[i].ss_bo = NULL;
dri_bo_unreference(pp_context->surfaces[i].s_bo);
pp_context->surfaces[i].s_bo = NULL;
}
dri_bo_unreference(pp_context->sampler_state_table.bo);
pp_context->sampler_state_table.bo = NULL;
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
pp_context->sampler_state_table.bo_8x8 = NULL;
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
pp_context->sampler_state_table.bo_8x8_uv = NULL;
dri_bo_unreference(pp_context->binding_table.bo);
pp_context->binding_table.bo = NULL;
dri_bo_unreference(pp_context->idrt.bo);
pp_context->idrt.bo = NULL;
dri_bo_unreference(pp_context->vfe_state.bo);
pp_context->vfe_state.bo = NULL;
dri_bo_unreference(pp_context->stmm.bo);
pp_context->stmm.bo = NULL;
free(pp_context);
}
i965->pp_context = NULL;
for (i = 0; i < NUM_PP_MODULES && pp_modules; i++) {
struct pp_module *pp_module = &pp_modules[i];
dri_bo_unreference(pp_module->bo);
pp_module->bo = NULL;
}
return True;
}
Bool
i965_post_processing_init(VADriverContextP ctx)
{ {
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context; struct i965_post_processing_context *pp_context = i965->pp_context;
int i; int i;
if (pp_context == NULL) {
pp_context = calloc(1, sizeof(*pp_context));
i965->pp_context = pp_context;
}
pp_context->urb.size = URB_SIZE((&i965->intel)); pp_context->urb.size = URB_SIZE((&i965->intel));
pp_context->urb.num_vfe_entries = 32; pp_context->urb.num_vfe_entries = 32;
pp_context->urb.size_vfe_entry = 1; pp_context->urb.size_vfe_entry = 1;
...@@ -1970,6 +2030,7 @@ i965_post_processing_once_init(VADriverContextP ctx) ...@@ -1970,6 +2030,7 @@ i965_post_processing_once_init(VADriverContextP ctx)
for (i = 0; i < NUM_PP_MODULES && pp_modules; i++) { for (i = 0; i < NUM_PP_MODULES && pp_modules; i++) {
struct pp_module *pp_module = &pp_modules[i]; struct pp_module *pp_module = &pp_modules[i];
dri_bo_unreference(pp_module->bo);
pp_module->bo = dri_bo_alloc(i965->intel.bufmgr, pp_module->bo = dri_bo_alloc(i965->intel.bufmgr,
pp_module->name, pp_module->name,
pp_module->size, pp_module->size,
...@@ -1977,53 +2038,6 @@ i965_post_processing_once_init(VADriverContextP ctx) ...@@ -1977,53 +2038,6 @@ i965_post_processing_once_init(VADriverContextP ctx)
assert(pp_module->bo); assert(pp_module->bo);
dri_bo_subdata(pp_module->bo, 0, pp_module->size, pp_module->bin); dri_bo_subdata(pp_module->bo, 0, pp_module->size, pp_module->bin);
} }
}
Bool
i965_post_processing_terminate(VADriverContextP ctx)
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_post_processing_context *pp_context = &i965->render_state.pp_context;
int i;
dri_bo_unreference(pp_context->curbe.bo);
pp_context->curbe.bo = NULL;
for (i = 0; i < MAX_PP_SURFACES; i++) {
dri_bo_unreference(pp_context->surfaces[i].ss_bo);
pp_context->surfaces[i].ss_bo = NULL;
dri_bo_unreference(pp_context->surfaces[i].s_bo);
pp_context->surfaces[i].s_bo = NULL;
}
dri_bo_unreference(pp_context->sampler_state_table.bo);
pp_context->sampler_state_table.bo = NULL;
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8);
pp_context->sampler_state_table.bo_8x8 = NULL;
dri_bo_unreference(pp_context->sampler_state_table.bo_8x8_uv);
pp_context->sampler_state_table.bo_8x8_uv = NULL;
dri_bo_unreference(pp_context->binding_table.bo);
pp_context->binding_table.bo = NULL;
dri_bo_unreference(pp_context->idrt.bo);
pp_context->idrt.bo = NULL;
dri_bo_unreference(pp_context->vfe_state.bo);
pp_context->vfe_state.bo = NULL;
dri_bo_unreference(pp_context->stmm.bo);
pp_context->stmm.bo = NULL;
for (i = 0; i < NUM_PP_MODULES && pp_modules; i++) {
struct pp_module *pp_module = &pp_modules[i];
dri_bo_unreference(pp_module->bo);
pp_module->bo = NULL;
}
return True; return True;
} }
...@@ -142,9 +142,9 @@ i965_post_processing(VADriverContextP ctx, ...@@ -142,9 +142,9 @@ i965_post_processing(VADriverContextP ctx,
unsigned short destw, unsigned short destw,
unsigned short desth, unsigned short desth,
unsigned int pp_index); unsigned int pp_index);
void
i965_post_processing_once_init(VADriverContextP ctx);
Bool Bool
i965_post_processing_terminate(VADriverContextP ctx); i965_post_processing_terminate(VADriverContextP ctx);
Bool
i965_post_processing_init(VADriverContextP ctx);
#endif /* __I965_POST_PROCESSING_H__ */ #endif /* __I965_POST_PROCESSING_H__ */
...@@ -2099,8 +2099,6 @@ i965_render_init(VADriverContextP ctx) ...@@ -2099,8 +2099,6 @@ i965_render_init(VADriverContextP ctx)
assert(render_state->curbe.bo); assert(render_state->curbe.bo);
render_state->curbe.upload = 0; render_state->curbe.upload = 0;
i965_post_processing_once_init(ctx);
return True; return True;
} }
...@@ -2111,8 +2109,6 @@ i965_render_terminate(VADriverContextP ctx) ...@@ -2111,8 +2109,6 @@ i965_render_terminate(VADriverContextP ctx)
struct i965_driver_data *i965 = i965_driver_data(ctx); struct i965_driver_data *i965 = i965_driver_data(ctx);
struct i965_render_state *render_state = &i965->render_state; struct i965_render_state *render_state = &i965->render_state;
i965_post_processing_terminate(ctx);
dri_bo_unreference(render_state->curbe.bo); dri_bo_unreference(render_state->curbe.bo);
render_state->curbe.bo = NULL; render_state->curbe.bo = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment