Lines Matching refs:media_state

199 struct media_state {
207 struct media_state media_state;
209 static void free_object(struct media_state *s)
223 static int alloc_object(struct media_state *s)
304 static void media_state_pointers(struct media_state *media_state)
310 OUT_RELOC(media_state->vfe_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
316 static Status setup_media_surface(struct media_state *media_state,
331 if (media_state->binding_table.surface_states[surface_num].bo)
332 drm_intel_bo_unreference(media_state->
335 media_state->binding_table.surface_states[surface_num].bo =
338 if (!media_state->binding_table.surface_states[surface_num].bo)
341 drm_intel_bo_subdata(media_state->
345 drm_intel_bo_emit_reloc(media_state->
354 static Status setup_surfaces(struct media_state *media_state,
359 ret = setup_media_surface(media_state, 0, dst_bo, 0, w, h, TRUE);
363 setup_media_surface(media_state, 1, dst_bo, w * h, w / 2, h / 2,
368 setup_media_surface(media_state, 2, dst_bo, w * h + w * h / 4,
374 setup_media_surface(media_state, 4, past_bo, 0, w, h,
379 setup_media_surface(media_state, 5, past_bo, w * h, w / 2,
384 setup_media_surface(media_state, 6, past_bo,
391 setup_media_surface(media_state, 7, future_bo, 0, w, h,
396 setup_media_surface(media_state, 8, future_bo, w * h, w / 2,
401 setup_media_surface(media_state, 9, future_bo,
413 static Status setup_blocks(struct media_state *media_state,
429 ss.ss1.base_addr = media_state->indirect_data.bo->offset;
437 if (media_state->binding_table.surface_states[3].bo)
438 drm_intel_bo_unreference(media_state->
441 media_state->binding_table.surface_states[3].bo =
444 if (!media_state->binding_table.surface_states[3].bo)
447 drm_intel_bo_subdata(media_state->binding_table.surface_states[3].bo, 0,
450 drm_intel_bo_emit_reloc(media_state->binding_table.surface_states[3].bo,
452 media_state->indirect_data.bo, 0,
472 static void pipeline_select(struct media_state *media_state)
476 if (media_state->is_g4x)
491 if (media_state.is_965_q) {
496 OUT_RELOC(media_state.indirect_data.bo,
502 OUT_RELOC(media_state.indirect_data.bo, //g1.8
517 if (media_state.is_965_q)
524 static Status binding_tables(struct media_state *media_state)
529 if (media_state->binding_table.bo)
530 drm_intel_bo_unreference(media_state->binding_table.bo);
531 media_state->binding_table.bo =
534 if (!media_state->binding_table.bo)
539 media_state->binding_table.surface_states[i].bo->offset;
540 drm_intel_bo_subdata(media_state->binding_table.bo, 0,
544 drm_intel_bo_emit_reloc(media_state->binding_table.bo,
546 media_state->
552 static int media_kernels(struct media_state *media_state)
557 if (media_state->is_g4x) {
566 media_state->vfe_state.interface.kernels[i].bo =
569 if (!media_state->vfe_state.interface.kernels[i].bo)
574 dri_bo *bo = media_state->vfe_state.interface.kernels[i].bo;
579 free_object(media_state);
583 static void setup_interface(struct media_state *media_state, enum interface i)
590 media_state->vfe_state.interface.kernels[i].bo->offset >> 6;
599 media_state->binding_table.bo->offset >> 5;
601 drm_intel_bo_subdata(media_state->vfe_state.interface.bo,
604 drm_intel_bo_emit_reloc(media_state->vfe_state.interface.bo,
608 media_state->vfe_state.interface.kernels[i].bo,
612 drm_intel_bo_emit_reloc(media_state->vfe_state.interface.bo,
615 desc3), media_state->binding_table.bo,
620 static Status interface_descriptor(struct media_state *media_state)
622 if (media_state->vfe_state.interface.bo)
623 drm_intel_bo_unreference(media_state->vfe_state.interface.bo);
624 media_state->vfe_state.interface.bo =
628 if (!media_state->vfe_state.interface.bo)
631 setup_interface(media_state, INTRA_INTERFACE);
632 setup_interface(media_state, NULL_INTERFACE);
633 setup_interface(media_state, FORWARD_INTERFACE);
634 setup_interface(media_state, FIELD_FORWARD_INTERFACE);
635 setup_interface(media_state, BACKWARD_INTERFACE);
636 setup_interface(media_state, FIELD_BACKWARD_INTERFACE);
637 setup_interface(media_state, F_B_INTERFACE);
638 setup_interface(media_state, FIELD_F_B_INTERFACE);
639 setup_interface(media_state, DUAL_PRIME_INTERFACE);
643 static Status vfe_state(struct media_state *media_state)
656 media_state->vfe_state.interface.bo->offset >> 4;
658 if (media_state->vfe_state.bo)
659 drm_intel_bo_unreference(media_state->vfe_state.bo);
660 media_state->vfe_state.bo = drm_intel_bo_alloc(xvmc_driver->bufmgr,
665 if (!media_state->vfe_state.bo)
668 drm_intel_bo_subdata(media_state->vfe_state.bo, 0, sizeof(state),
671 drm_intel_bo_emit_reloc(media_state->vfe_state.bo,
673 media_state->vfe_state.interface.bo, 0,
709 if (media_state.indirect_data.bo) {
710 drm_intel_gem_bo_unmap_gtt(media_state.
713 drm_intel_bo_unreference(media_state.indirect_data.bo);
715 media_state.indirect_data.bo = drm_intel_bo_alloc(xvmc_driver->bufmgr,
719 if (!media_state.indirect_data.bo)
721 setup_surfaces(&media_state,
726 setup_blocks(&media_state, 128 * 6 * num_macroblocks);
727 binding_tables(&media_state);
728 interface_descriptor(&media_state);
729 vfe_state(&media_state);
731 drm_intel_gem_bo_map_gtt(media_state.indirect_data.bo);
733 block_ptr = media_state.indirect_data.bo->virtual;
783 pipeline_select(&media_state);
785 media_state_pointers(&media_state);
865 media_state.is_g4x = hw_ctx->i965.is_g4x;
866 media_state.is_965_q = hw_ctx->i965.is_965_q;
868 if (alloc_object(&media_state))
870 if (media_kernels(&media_state))