Home | History | Annotate | Download | only in src

Lines Matching defs:cmdbuf

59 #define RELOC_END(cmdbuf)     (cmdbuf->cmd_base + cmdbuf->size)
60 #define CMD_END(cmdbuf) (cmdbuf->reloc_base)
80 void tng_cmdbuf_mem_unmap(tng_cmdbuf_p cmdbuf)
82 psb_buffer_unmap(&cmdbuf->frame_mem);
83 psb_buffer_unmap(&cmdbuf->jpeg_pic_params);
84 psb_buffer_unmap(&cmdbuf->jpeg_header_mem);
85 psb_buffer_unmap(&cmdbuf->jpeg_header_interface_mem);
92 static void tng_cmdbuf_clear(tng_cmdbuf_p cmdbuf, int flag)
97 psb_buffer_destroy(&cmdbuf->jpeg_header_mem);
99 psb_buffer_destroy(&cmdbuf->jpeg_pic_params);
102 psb_buffer_destroy(&cmdbuf->frame_mem);
106 if (cmdbuf->size) {
107 psb_buffer_destroy(&cmdbuf->buf);
108 cmdbuf->size = 0;
110 if (cmdbuf->buffer_refs_allocated) {
111 free(cmdbuf->buffer_refs);
112 cmdbuf->buffer_refs = NULL;
113 cmdbuf->buffer_refs_allocated = 0;
125 tng_cmdbuf_p cmdbuf)
132 cmdbuf->size = 0;
133 cmdbuf->cmd_base = NULL;
134 cmdbuf->cmd_idx = NULL;
135 cmdbuf->reloc_base = NULL;
136 cmdbuf->reloc_idx = NULL;
137 cmdbuf->buffer_refs_count = 0;
138 cmdbuf->buffer_refs_allocated = 10;
139 cmdbuf->buffer_refs = (psb_buffer_p *) calloc(1, sizeof(psb_buffer_p) * cmdbuf->buffer_refs_allocated);
140 if (NULL == cmdbuf->buffer_refs) {
141 cmdbuf->buffer_refs_allocated = 0;
146 vaStatus = psb_buffer_create(driver_data, size, psb_bt_cpu_only, &cmdbuf->buf);
147 cmdbuf->size = size;
152 tng_cmdbuf_clear(cmdbuf, 1);
153 free(cmdbuf->buffer_refs);
154 cmdbuf->buffer_refs = NULL;
155 cmdbuf->buffer_refs_allocated = 0;
159 cmdbuf->mem_size = tng_align_KB(TNG_HEADER_SIZE);
160 drv_debug_msg(VIDEO_DEBUG_GENERAL, "mem size %d\n", __FUNCTION__, cmdbuf->mem_size);
163 //tng__alloc_init_buffer(driver_data, COMM_CMD_FRAME_BUF_NUM * cmdbuf->mem_size, psb_bt_cpu_vpu, &cmdbuf->frame_mem);
165 vaStatus = psb_buffer_create(driver_data, COMM_CMD_FRAME_BUF_NUM * cmdbuf->mem_size, psb_bt_cpu_vpu, &cmdbuf->frame_mem);
168 free(cmdbuf->buffer_refs);
169 cmdbuf->buffer_refs = NULL;
170 cmdbuf->buffer_refs_allocated = 0;
173 /* all cmdbuf share one MTX_CURRENT_IN_PARAMS since every MB has a MTX_CURRENT_IN_PARAMS structure
178 vaStatus = psb_buffer_create(driver_data, ctx->jpeg_pic_params_size, psb_bt_cpu_vpu, &cmdbuf->jpeg_pic_params);
181 tng_cmdbuf_clear(cmdbuf, 2);
186 vaStatus = psb_buffer_create(driver_data, ctx->jpeg_header_mem_size, psb_bt_cpu_vpu, &cmdbuf->jpeg_header_mem);
189 tng_cmdbuf_clear(cmdbuf, 3);
194 vaStatus = psb_buffer_create(driver_data, ctx->jpeg_header_interface_mem_size, psb_bt_cpu_vpu, &cmdbuf->jpeg_header_interface_mem);
197 tng_cmdbuf_clear(cmdbuf, 4);
207 void tng_cmdbuf_destroy(tng_cmdbuf_p cmdbuf)
209 psb_buffer_destroy(&cmdbuf->frame_mem);
210 psb_buffer_destroy(&cmdbuf->jpeg_header_mem);
211 psb_buffer_destroy(&cmdbuf->jpeg_pic_params);
212 psb_buffer_destroy(&cmdbuf->jpeg_header_interface_mem);
214 if (cmdbuf->size) {
215 psb_buffer_destroy(&cmdbuf->buf);
216 cmdbuf->size = 0;
218 if (cmdbuf->buffer_refs_allocated) {
219 free(cmdbuf->buffer_refs);
220 cmdbuf->buffer_refs = NULL;
221 cmdbuf->buffer_refs_allocated = 0;
231 int tng_cmdbuf_reset(tng_cmdbuf_p cmdbuf)
234 cmdbuf->cmd_base = NULL;
235 cmdbuf->cmd_idx = NULL;
236 cmdbuf->reloc_base = NULL;
237 cmdbuf->reloc_idx = NULL;
239 cmdbuf->buffer_refs_count = 0;
240 cmdbuf->frame_mem_index = 0;
241 cmdbuf->cmd_count = 0;
242 cmdbuf->mem_size = tng_align_KB(TNG_HEADER_SIZE);
244 ret = psb_buffer_map(&cmdbuf->buf, &cmdbuf->cmd_base);
249 cmdbuf->cmd_start = cmdbuf->cmd_base;
250 cmdbuf->cmd_idx = (IMG_UINT32 *) cmdbuf->cmd_base;
252 cmdbuf->reloc_base = cmdbuf->cmd_base + CMD_SIZE;
253 cmdbuf->reloc_idx = (struct drm_psb_reloc *) cmdbuf->reloc_base;
256 tng_cmdbuf_buffer_ref(cmdbuf, &cmdbuf->buf); /* cmd buf == 0 */
265 int tng_cmdbuf_unmap(tng_cmdbuf_p cmdbuf)
267 cmdbuf->cmd_base = NULL;
268 cmdbuf->cmd_start = NULL;
269 cmdbuf->cmd_idx = NULL;
270 cmdbuf->reloc_base = NULL;
271 cmdbuf->reloc_idx = NULL;
272 cmdbuf->cmd_count = 0;
273 psb_buffer_unmap(&cmdbuf->buf);
283 int tng_cmdbuf_buffer_ref(tng_cmdbuf_p cmdbuf, psb_buffer_p buf)
288 while ((item_loc < cmdbuf->buffer_refs_count)
289 && (wsbmKBufHandle(wsbmKBuf(cmdbuf->buffer_refs[item_loc]->drm_buf))
291 //while( (item_loc < cmdbuf->buffer_refs_count) && (cmdbuf->buffer_refs[item_loc] != buf) )
295 if (item_loc == cmdbuf->buffer_refs_count) {
297 if (item_loc >= cmdbuf->buffer_refs_allocated) {
299 int new_size = cmdbuf->buffer_refs_allocated + 10;
305 memcpy(new_array, cmdbuf->buffer_refs, sizeof(psb_buffer_p) * cmdbuf->buffer_refs_allocated);
306 free(cmdbuf->buffer_refs);
307 cmdbuf->buffer_refs_allocated = new_size;
308 cmdbuf->buffer_refs = new_array;
310 cmdbuf->buffer_refs[item_loc] = buf;
311 cmdbuf->buffer_refs_count++;
317 /* Creates a relocation record for a DWORD in the mapped "cmdbuf" at address
325 void tng_cmdbuf_add_relocation(tng_cmdbuf_p cmdbuf,
333 IMG_UINT32 *start_of_dst_buffer) /*Index of the list refered by cmdbuf->buffer_refs */
335 struct drm_psb_reloc *reloc = cmdbuf->reloc_idx;
340 reloc->buffer = tng_cmdbuf_buffer_ref(cmdbuf, ref_buffer);
356 *addr_in_dst_buffer = reloc - (struct drm_psb_reloc *)cmdbuf->reloc_base;
363 cmdbuf->reloc_idx++;
365 ASSERT(((void *)(cmdbuf->reloc_idx)) < RELOC_END(cmdbuf));
381 tng_cmdbuf_p cmdbuf = obj_context->tng_cmdbuf;
411 *cmdbuf->cmd_idx++ = cmd_word;
414 /* write command word into cmdbuf */
415 *cmdbuf->cmd_idx++ = cmd_data;
419 *cmdbuf->cmd_idx++ = (IMG_UINT32)data_addr;
422 __FUNCTION__, *(cmdbuf->cmd_idx));
426 TNG_RELOC_CMDBUF_START(cmdbuf->cmd_idx, offset, data_addr);
428 tng_cmdbuf_set_phys(cmdbuf->cmd_idx, 0, data_addr, offset, 0);
431 TNG_RELOC_CMDBUF_START(cmdbuf->cmd_idx, offset, data_addr);
433 tng_cmdbuf_set_phys(cmdbuf->cmd_idx, 0, data_addr, offset, 0);
438 __FUNCTION__, *(cmdbuf->cmd_idx));
439 cmdbuf->cmd_idx++;
442 *cmdbuf->cmd_idx++ = 0;
446 *cmdbuf->cmd_idx++ = ctx->ui16IntraRefresh;
447 *cmdbuf->cmd_idx++ = ctx->sRCParams.ui32InitialQp;
448 *cmdbuf->cmd_idx++ = ctx->sRCParams.iMinQP;
449 *cmdbuf->cmd_idx++ = ctx->ctx_mem_size.mb_ctrl_in_params;
450 *cmdbuf->cmd_idx++ = ctx->ui32pseudo_rand_seed;
454 *cmdbuf->cmd_idx++ = ctx->sAirInfo.i16AIRSkipCnt;
455 *cmdbuf->cmd_idx++ = ctx->sAirInfo.i32NumAIRSPerFrame;
456 *cmdbuf->cmd_idx++ = ctx->ctx_mem_size.mb_ctrl_in_params;
457 *cmdbuf->cmd_idx++ = ctx->ui32FrameCount[0];
461 *cmdbuf->cmd_idx++ = ctx->ctx_mem_size.first_pass_out_best_multipass_param;
462 *cmdbuf->cmd_idx++ = ctx->sAirInfo.i32SAD_Threshold;
463 *cmdbuf->cmd_idx++ = ctx->ui8EnableSelStatsFlags;
468 *(cmdbuf->cmd_idx)++ = wsbmKBufHandle(wsbmKBuf(ctx->bufs_writeback.drm_buf));
471 __FUNCTION__, *(cmdbuf->cmd_idx - 1));
474 *(cmdbuf->cmd_idx)++ = wsbmKBufHandle(wsbmKBuf(data_addr->drm_buf));
476 *(cmdbuf->cmd_idx)++ = wsbmKBufHandle(wsbmKBuf(ps_mem->bufs_mb_ctrl_in_params.drm_buf));
477 *(cmdbuf->cmd_idx)++ = wsbmKBufHandle(wsbmKBuf(ps_mem->bufs_first_pass_out_params.drm_buf));
478 *(cmdbuf
482 *(cmdbuf->cmd_idx)++ = wsbmKBufHandle(wsbmKBuf(ctx->bufs_writeback.drm_buf));
485 __FUNCTION__, *(cmdbuf->cmd_idx - 1));
489 *(cmdbuf->cmd_idx)++ = ctx->eCodec;
493 __FUNCTION__, *(cmdbuf->cmd_idx - 1));
501 * Advances "obj_context" to the next cmdbuf
507 tng_cmdbuf_p cmdbuf;
521 cmdbuf = obj_context->tng_cmdbuf_list[obj_context->cmdbuf_current];
522 ret = tng_cmdbuf_reset(cmdbuf);
525 obj_context->tng_cmdbuf = cmdbuf;
528 // tng_cmdbuf_buffer_ref(cmdbuf, &cmdbuf->pic_params);
529 // tng_cmdbuf_buffer_ref(cmdbuf, &cmdbuf->slice_mem);
534 * This is the user-space do-it-all interface to the drm cmdbuf ioctl.
686 * Submits the current cmdbuf
741 tng_cmdbuf_p cmdbuf = obj_context->tng_cmdbuf;
748 unsigned int cmdbuffer_size = (unsigned int) (((unsigned char *)(cmdbuf->cmd_idx)) - cmdbuf->cmd_start); /* In bytes */
751 ASSERT((void *) cmdbuf->cmd_idx < CMD_END(cmdbuf));
761 reloc_offset = cmdbuf->reloc_base - cmdbuf->cmd_base;
762 num_relocs = (((unsigned char *) (cmdbuf->reloc_idx)) - cmdbuf->reloc_base) / sizeof(struct drm_psb_reloc);
764 tng_cmdbuf_unmap(cmdbuf);
766 ASSERT(NULL == cmdbuf->reloc_base);
778 cmdbuf->buffer_refs, cmdbuf->buffer_refs_count, wsbmKBufHandle(wsbmKBuf(cmdbuf->buf.drm_buf)),
780 wsbmKBufHandle(wsbmKBuf(cmdbuf->buf.drm_buf)), reloc_offset, num_relocs,