Lines Matching refs:pushbuf
40 drm_tegra_pushbuf_get_offset(struct drm_tegra_pushbuf *pushbuf, uint32_t *ptr)
42 return ptr - pushbuf->start;
45 void drm_tegra_pushbuf_free(struct drm_tegra_pushbuf *pushbuf)
47 if (pushbuf->start)
48 free(pushbuf->start);
50 free(pushbuf);
55 * @pushbuf: push buffer
59 drm_tegra_pushbuf_begin(struct drm_tegra_pushbuf *pushbuf,
62 struct drm_tegra_job *job = pushbuf->job;
67 if (pushbuf->ptr + words >= pushbuf->end) {
68 words = pushbuf->end - pushbuf->start + words;
70 offset = pushbuf->ptr - pushbuf->start;
72 ptr = realloc(pushbuf->start, size);
76 pushbuf->start = ptr;
77 pushbuf->end = pushbuf->start + size / 4;
78 pushbuf->ptr = pushbuf->start + offset;
82 *ptrp = pushbuf->ptr;
88 drm_tegra_pushbuf_end(struct drm_tegra_pushbuf *pushbuf, uint32_t *ptr)
92 command = drm_tegra_job_add_command(pushbuf->job,
98 command->gather_uptr.words = ptr - pushbuf->start;
99 pushbuf->ptr = ptr;
105 drm_tegra_pushbuf_wait(struct drm_tegra_pushbuf *pushbuf,
111 command = drm_tegra_job_add_command(pushbuf->job,
124 drm_tegra_pushbuf_relocate(struct drm_tegra_pushbuf *pushbuf, uint32_t **ptrp,
130 struct drm_tegra_job *job = pushbuf->job;
145 buffer->reloc.gather_offset_words = drm_tegra_pushbuf_get_offset(pushbuf,
158 drm_tegra_pushbuf_sync(struct drm_tegra_pushbuf *pushbuf,
162 struct drm_tegra_job *job = pushbuf->job;
171 drm_tegra_pushbuf_sync_cond(struct drm_tegra_pushbuf *pushbuf, uint32_t **ptrp,
175 struct drm_tegra_channel *channel = pushbuf->job->channel;
183 return drm_tegra_pushbuf_sync(pushbuf, syncpt, 1);