ADVANCE_BCS_BATCH(batch);
}
-static void gen6_mfc_avc_directmode_state(VADriverContextP ctx,
- struct gen6_encoder_context *gen6_encoder_context,
- struct intel_batchbuffer *batch)
-{
- int i;
-
- if (batch == NULL)
- batch = gen6_encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 69);
-
- OUT_BCS_BATCH(batch, MFX_AVC_DIRECTMODE_STATE | (69 - 2));
- //TODO: reference DMV
- for(i = 0; i < 16; i++){
- OUT_BCS_BATCH(batch, 0);
- OUT_BCS_BATCH(batch, 0);
- }
-
- //TODO: current DMV just for test
-#if 0
- OUT_BCS_RELOC(batch, mfc_context->direct_mv_buffers[0].bo,
- I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
- 0);
-#else
- //drm_intel_bo_pin(mfc_context->direct_mv_buffers[0].bo, 0x1000);
- //OUT_BCS_BATCH(batch, mfc_context->direct_mv_buffers[0].bo->offset);
- OUT_BCS_BATCH(batch, 0);
-#endif
-
-
- OUT_BCS_BATCH(batch, 0);
-
- //TODO: POL list
- for(i = 0; i < 34; i++) {
- OUT_BCS_BATCH(batch, 0);
- }
-
- ADVANCE_BCS_BATCH(batch);
-}
-
static void gen6_mfc_avc_slice_state(VADriverContextP ctx,
int intra_slice,
struct gen6_encoder_context *gen6_encoder_context,
ADVANCE_BCS_BATCH(batch);
}
-static void
-gen6_mfc_avc_insert_object(VADriverContextP ctx, int flush_data,
- struct gen6_encoder_context *gen6_encoder_context,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = gen6_encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, MFC_AVC_INSERT_OBJECT | (4 -2 ) );
- OUT_BCS_BATCH(batch, (32<<8) |
- (1 << 3) |
- (1 << 2) |
- (flush_data << 1) |
- (1<<0) );
- OUT_BCS_BATCH(batch, 0x00000003);
- OUT_BCS_BATCH(batch, 0xABCD1234);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
static int
gen6_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb, int qp,unsigned int *msg,
struct gen6_encoder_context *gen6_encoder_context,
int i;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
/*Encode common setup for MFC*/
dri_bo_unreference(mfc_context->post_deblocking_output.bo);
}
static void
-gen6_mfd_aes_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select)
-{
- /* FIXME */
-}
-
-static void
-gen6_mfd_wait(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen6_mfd_context *gen6_mfd_context)
-{
- struct intel_batchbuffer *batch = gen6_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 1);
- OUT_BCS_BATCH(batch, MFX_WAIT | (1 << 8));
- ADVANCE_BCS_BATCH(batch);
-}
-
-static void
gen6_mfd_avc_img_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen6_mfd_context *gen6_mfd_context)
struct gen6_encoder_context *gen6_encoder_context)
{
struct gen6_vme_context *vme_context = &gen6_encoder_context->vme_context;
- unsigned char *constant_buffer;
dri_bo_map(vme_context->curbe.bo, 1);
assert(vme_context->curbe.bo->virtual);
- constant_buffer = vme_context->curbe.bo->virtual;
/*TODO copy buffer into CURB*/
ADVANCE_BCS_BATCH(batch);
}
-static void
-gen75_mfc_avc_insert_object(VADriverContextP ctx, int flush_data,
- struct gen6_encoder_context *gen6_encoder_context,
- struct intel_batchbuffer *batch)
-{
- if (batch == NULL)
- batch = gen6_encoder_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 4);
-
- OUT_BCS_BATCH(batch, MFC_AVC_INSERT_OBJECT | (4 -2 ) );
- OUT_BCS_BATCH(batch, (32<<8) |
- (1 << 3) |
- (1 << 2) |
- (flush_data << 1) |
- (1<<0) );
- OUT_BCS_BATCH(batch, 0x00000003);
- OUT_BCS_BATCH(batch, 0xABCD1234);
-
- ADVANCE_BCS_BATCH(batch);
-}
-
static int
gen75_mfc_avc_pak_object_intra(VADriverContextP ctx, int x, int y, int end_mb, int qp,unsigned int *msg,
struct gen6_encoder_context *gen6_encoder_context,
int i;
VAEncSequenceParameterBufferH264 *pSequenceParameter = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param->buffer;
int width_in_mbs = pSequenceParameter->picture_width_in_mbs;
- int height_in_mbs = pSequenceParameter->picture_height_in_mbs;
/*Encode common setup for MFC*/
dri_bo_unreference(mfc_context->post_deblocking_output.bo);
}
static void
-gen75_mfd_aes_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select)
-{
- /* FIXME */
-}
-
-static void
gen75_mfd_qm_state(VADriverContextP ctx,
int qm_type,
unsigned char *qm,
intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
ADVANCE_BCS_BATCH(batch);
}
-static void
-gen75_mfd_wait(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 1);
- OUT_BCS_BATCH(batch, MFX_WAIT | (1 << 8));
- ADVANCE_BCS_BATCH(batch);
-}
static void
gen75_mfd_avc_img_state(VADriverContextP ctx,
struct decode_state *decode_state,
struct gen7_mfd_context *gen7_mfd_context)
{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
BEGIN_BCS_BATCH(batch, 10);
gen75_jpeg_wa_ind_obj_base_addr_state_bplus(VADriverContextP ctx,
struct gen7_mfd_context *gen7_mfd_context)
{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
BEGIN_BCS_BATCH(batch, 26);
*/
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <assert.h>
struct encode_state *encode_state,
struct gen6_encoder_context *gen6_encoder_context)
{
- struct i965_driver_data *i965 = i965_driver_data(ctx);
VAStatus vaStatus = VA_STATUS_SUCCESS;
VAEncSliceParameterBuffer *pSliceParameter = (VAEncSliceParameterBuffer *)encode_state->slice_params[0]->buffer;
int is_intra = pSliceParameter->slice_flags.bits.is_intra;
}
static void
-gen7_mfd_aes_state(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select)
-{
- /* FIXME */
-}
-
-static void
gen7_mfd_qm_state(VADriverContextP ctx,
int qm_type,
unsigned char *qm,
intel_batchbuffer_data(batch, qm_buffer, 16 * 4);
ADVANCE_BCS_BATCH(batch);
}
-static void
-gen7_mfd_wait(VADriverContextP ctx,
- struct decode_state *decode_state,
- int standard_select,
- struct gen7_mfd_context *gen7_mfd_context)
-{
- struct intel_batchbuffer *batch = gen7_mfd_context->base.batch;
-
- BEGIN_BCS_BATCH(batch, 1);
- OUT_BCS_BATCH(batch, MFX_WAIT | (1 << 8));
- ADVANCE_BCS_BATCH(batch);
-}
static void
gen7_mfd_avc_img_state(VADriverContextP ctx,
IS_GEN7((ctx)->intel.device_id))
#define HAS_ACCELERATED_PUTIMAGE(ctx) HAS_VPP(ctx)
-static int get_sampling_from_fourcc(unsigned int fourcc);
#if VA_CHECK_VERSION(0,33,0)
/* Check whether we are rendering to X11 (VA/X11 or VA/GLX API) */
struct i965_sampler_8x8_state *sampler_8x8_state;
int index, i;
int width[3], height[3], pitch[3], offset[3];
- int src_width, src_height;
+ int src_height;
/* source surface */
gen7_pp_set_media_rw_message_surface(ctx, pp_context, src_surface, 0, 0,
width, height, pitch, offset);
- src_width = width[0];
src_height = height[0];
/* destination surface */
{
struct i965_driver_data *i965 = i965_driver_data(ctx);
struct object_surface *obj_surface = SURFACE(surface);
- int w, h;
- dri_bo *region;
dri_bo *subpic_region;
struct object_subpic *obj_subpic = SUBPIC(obj_surface->subpic);
struct object_image *obj_image = IMAGE(obj_subpic->image);
assert(obj_surface);
assert(obj_surface->bo);
- w = obj_surface->width;
- h = obj_surface->height;
- region = obj_surface->bo;
subpic_region = obj_image->bo;
/*subpicture surface*/
i965_render_src_surface_state(ctx, 1, subpic_region, 0, obj_subpic->width, obj_subpic->height, obj_subpic->pitch, obj_subpic->format, 0);
void intel_batchbuffer_start_atomic(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_start_atomic_bcs(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_start_atomic_blt(struct intel_batchbuffer *batch, unsigned int size);
+void intel_batchbuffer_start_atomic_veb(struct intel_batchbuffer *batch, unsigned int size);
void intel_batchbuffer_end_atomic(struct intel_batchbuffer *batch);
void intel_batchbuffer_emit_dword(struct intel_batchbuffer *batch, unsigned int x);
void intel_batchbuffer_emit_reloc(struct intel_batchbuffer *batch, dri_bo *bo,
char config_data[16];
fp = fopen("/sys/devices/pci0000:00/0000:00:02.0/config", "r");
- fread(config_data, 1, 16, fp);
- fclose(fp);
- *value = config_data[PCI_REVID];
+
+ if (fp) {
+ if (fread(config_data, 1, 16, fp))
+ *value = config_data[PCI_REVID];
+ else
+ *value = 2; /* assume it is at least B-steping */
+ fclose(fp);
+ } else {
+ *value = 2; /* assume it is at least B-steping */
+ }
+
return;
}