Lines Matching refs:msm_ring

122 	struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
123 assert(!LIST_IS_EMPTY(&msm_ring->cmd_list));
124 return LIST_LAST_ENTRY(&msm_ring->cmd_list, struct msm_cmd, list);
139 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
175 msm_ring->offset = 0;
178 msm_ring->offset = suballoc_offset;
191 list_addtail(&cmd->list, &msm_ring->cmd_list);
192 msm_ring->cmd_count++;
203 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
206 idx = APPEND(&msm_ring->submit, bos);
207 idx = APPEND(msm_ring, bos);
209 msm_ring->submit.bos[idx].flags = 0;
210 msm_ring->submit.bos[idx].handle = bo->handle;
211 msm_ring->submit.bos[idx].presumed = to_msm_bo(bo)->presumed;
213 msm_ring->bos[idx] = fd_bo_ref(bo);
221 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
225 if (msm_bo->current_ring_seqno == msm_ring->seqno) {
230 if (!msm_ring->bo_table)
231 msm_ring->bo_table = drmHashCreate();
233 if (!drmHashLookup(msm_ring->bo_table, bo->handle, &val)) {
239 drmHashInsert(msm_ring->bo_table, bo->handle, val);
241 msm_bo->current_ring_seqno = msm_ring->seqno;
246 msm_ring->submit.bos[idx].flags |= MSM_SUBMIT_BO_READ;
248 msm_ring->submit.bos[idx].flags |= MSM_SUBMIT_BO_WRITE;
261 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
266 if (!msm_ring->cmd_table)
267 msm_ring->cmd_table = drmHashCreate();
278 !drmHashLookup(msm_ring->cmd_table, (unsigned long)target_cmd, &val)) {
280 cmd = &msm_ring->submit.cmds[i];
285 assert(msm_ring->submit.bos[cmd->submit_idx].handle ==
292 i = APPEND(&msm_ring->submit, cmds);
293 APPEND(msm_ring, cmds);
294 msm_ring->cmds[i] = target_cmd;
295 cmd = &msm_ring->submit.cmds[i];
305 drmHashInsert(msm_ring->cmd_table, (unsigned long)target_cmd,
321 static void delete_cmds(struct msm_ringbuffer *msm_ring)
325 LIST_FOR_EACH_ENTRY_SAFE(cmd, tmp, &msm_ring->cmd_list, list) {
332 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
335 for (i = 0; i < msm_ring->nr_bos; i++) {
336 struct msm_bo *msm_bo = to_msm_bo(msm_ring->bos[i]);
343 for (i = 0; i < msm_ring->nr_cmds; i++) {
344 struct msm_cmd *msm_cmd = msm_ring->cmds[i];
353 msm_ring->submit.nr_cmds = 0;
354 msm_ring->submit.nr_bos = 0;
355 msm_ring->nr_cmds = 0;
356 msm_ring->nr_bos = 0;
358 if (msm_ring->bo_table) {
359 drmHashDestroy(msm_ring->bo_table);
360 msm_ring->bo_table = NULL;
363 if (msm_ring->cmd_table) {
364 drmHashDestroy(msm_ring->cmd_table);
365 msm_ring->cmd_table = NULL;
368 if (msm_ring->is_growable) {
369 delete_cmds(msm_ring);
395 static void dump_submit(struct msm_ringbuffer *msm_ring)
399 for (i = 0; i < msm_ring->submit.nr_bos; i++) {
400 struct drm_msm_gem_submit_bo *bo = &msm_ring->submit.bos[i];
403 for (i = 0; i < msm_ring->submit.nr_cmds; i++) {
404 struct drm_msm_gem_submit_cmd *cmd = &msm_ring->submit.cmds[i];
421 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(stateobj);
427 struct fd_bo *bo = msm_ring->bos[idx];
430 if (msm_ring->submit.bos[idx].flags & MSM_SUBMIT_BO_READ)
432 if (msm_ring->submit.bos[idx].flags & MSM_SUBMIT_BO_WRITE)
443 for (i = 0; i < msm_ring->nr_cmds; i++) {
444 struct msm_cmd *msm_cmd = msm_ring->cmds[i];
445 struct drm_msm_gem_submit_cmd *cmd = &msm_ring->submit.cmds[i];
447 if (msm_ring->cmds[i]->ring == stateobj)
463 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
486 for (i = 0; i < msm_ring->submit.nr_cmds; i++) {
487 struct msm_cmd *msm_cmd = msm_ring->cmds[i];
503 cmd = &msm_ring->submit.cmds[i];
509 req.bos = VOID2U64(msm_ring->submit.bos),
510 req.nr_bos = msm_ring->submit.nr_bos;
511 req.cmds = VOID2U64(msm_ring->submit.cmds),
512 req.nr_cmds = msm_ring->submit.nr_cmds;
520 dump_submit(msm_ring);
523 for (i = 0; i < msm_ring->submit.nr_cmds; i++) {
524 struct msm_cmd *msm_cmd = msm_ring->cmds[i];
534 for (i = 0; i < msm_ring->submit.nr_cmds; i++) {
535 struct drm_msm_gem_submit_cmd *cmd = &msm_ring->submit.cmds[i];
536 struct msm_cmd *msm_cmd = msm_ring->cmds[i];
669 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
672 delete_cmds(msm_ring);
674 free(msm_ring->submit.cmds);
675 free(msm_ring->submit.bos);
676 free(msm_ring->bos);
677 free(msm_ring->cmds);
678 free(msm_ring);
695 struct msm_ringbuffer *msm_ring;
698 msm_ring = calloc(1, sizeof(*msm_ring));
699 if (!msm_ring) {
707 msm_ring->is_growable = TRUE;
710 list_inithead(&msm_ring->cmd_list);
711 msm_ring->seqno = ++to_msm_device(pipe->dev)->ring_cnt;
713 ring = &msm_ring->base;