From 36a3e77037a4457c7595b733810bfd37c992b004 Mon Sep 17 00:00:00 2001 From: Zhao Yakui Date: Tue, 24 May 2016 08:00:30 -0400 Subject: Use the buffer allocated externally to configure dynamic state for gpe_context on Gen8+ Signed-off-by: Zhao Yakui Reviewed-by: Sean V Kelley --- src/i965_gpe_utils.c | 20 ++++++++++++++++++++ src/i965_gpe_utils.h | 13 +++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/i965_gpe_utils.c b/src/i965_gpe_utils.c index bcf5dcf..7f0f86e 100644 --- a/src/i965_gpe_utils.c +++ b/src/i965_gpe_utils.c @@ -1571,3 +1571,23 @@ gen9_gpe_mi_batch_buffer_start(VADriverContextP ctx, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0, params->offset); } + +void +gen8_gpe_context_set_dynamic_buffer(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct gpe_dynamic_state_parameter *ds) +{ + if (!ds->bo || !gpe_context) + return; + + dri_bo_unreference(gpe_context->dynamic_state.bo); + gpe_context->dynamic_state.bo = ds->bo; + dri_bo_reference(gpe_context->dynamic_state.bo); + gpe_context->dynamic_state.bo_size = ds->bo_size; + + gpe_context->curbe_offset = ds->curbe_offset; + gpe_context->idrt_offset = ds->idrt_offset; + gpe_context->sampler_offset = ds->sampler_offset; + + return; +} diff --git a/src/i965_gpe_utils.h b/src/i965_gpe_utils.h index f3164b4..07d1ae3 100644 --- a/src/i965_gpe_utils.h +++ b/src/i965_gpe_utils.h @@ -64,6 +64,15 @@ struct i965_gpe_resource uint32_t y_cb_offset; }; +struct gpe_dynamic_state_parameter +{ + dri_bo *bo; + int bo_size; + unsigned int curbe_offset; + unsigned int idrt_offset; + unsigned int sampler_offset; +}; + struct i965_gpe_context { struct { @@ -295,6 +304,10 @@ extern void gen8_gpe_media_chroma_surface_setup(VADriverContextP ctx, void gen8_gpe_pipeline_setup(VADriverContextP ctx, struct i965_gpe_context *gpe_context, struct intel_batchbuffer *batch); +extern void +gen8_gpe_context_set_dynamic_buffer(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct gpe_dynamic_state_parameter *ds); void gen8_gpe_context_destroy(struct i965_gpe_context *gpe_context); -- cgit v1.2.3