Lines Matching refs:buffer

24 static inline void OUT(struct etnaviv_cmdbuf *buffer, u32 data)  in OUT()  argument
26 u32 *vaddr = (u32 *)buffer->vaddr; in OUT()
28 BUG_ON(buffer->user_size >= buffer->size); in OUT()
30 vaddr[buffer->user_size / 4] = data; in OUT()
31 buffer->user_size += 4; in OUT()
34 static inline void CMD_LOAD_STATE(struct etnaviv_cmdbuf *buffer, in CMD_LOAD_STATE() argument
39 buffer->user_size = ALIGN(buffer->user_size, 8); in CMD_LOAD_STATE()
42 OUT(buffer, VIV_FE_LOAD_STATE_HEADER_OP_LOAD_STATE | in CMD_LOAD_STATE()
45 OUT(buffer, value); in CMD_LOAD_STATE()
48 static inline void CMD_END(struct etnaviv_cmdbuf *buffer) in CMD_END() argument
50 buffer->user_size = ALIGN(buffer->user_size, 8); in CMD_END()
52 OUT(buffer, VIV_FE_END_HEADER_OP_END); in CMD_END()
55 static inline void CMD_WAIT(struct etnaviv_cmdbuf *buffer) in CMD_WAIT() argument
57 buffer->user_size = ALIGN(buffer->user_size, 8); in CMD_WAIT()
59 OUT(buffer, VIV_FE_WAIT_HEADER_OP_WAIT | 200); in CMD_WAIT()
62 static inline void CMD_LINK(struct etnaviv_cmdbuf *buffer, in CMD_LINK() argument
65 buffer->user_size = ALIGN(buffer->user_size, 8); in CMD_LINK()
67 OUT(buffer, VIV_FE_LINK_HEADER_OP_LINK | in CMD_LINK()
69 OUT(buffer, address); in CMD_LINK()
72 static inline void CMD_STALL(struct etnaviv_cmdbuf *buffer, in CMD_STALL() argument
75 buffer->user_size = ALIGN(buffer->user_size, 8); in CMD_STALL()
77 OUT(buffer, VIV_FE_STALL_HEADER_OP_STALL); in CMD_STALL()
78 OUT(buffer, VIV_FE_STALL_TOKEN_FROM(from) | VIV_FE_STALL_TOKEN_TO(to)); in CMD_STALL()
81 static inline void CMD_SEM(struct etnaviv_cmdbuf *buffer, u32 from, u32 to) in CMD_SEM() argument
83 CMD_LOAD_STATE(buffer, VIVS_GL_SEMAPHORE_TOKEN, in CMD_SEM()
89 struct etnaviv_cmdbuf *buffer, u8 pipe) in etnaviv_cmd_select_pipe() argument
106 CMD_LOAD_STATE(buffer, VIVS_GL_FLUSH_CACHE, flush); in etnaviv_cmd_select_pipe()
107 CMD_SEM(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_cmd_select_pipe()
108 CMD_STALL(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_cmd_select_pipe()
110 CMD_LOAD_STATE(buffer, VIVS_GL_PIPE_SELECT, in etnaviv_cmd_select_pipe()
135 static void etnaviv_buffer_replace_wait(struct etnaviv_cmdbuf *buffer, in etnaviv_buffer_replace_wait() argument
138 u32 *lw = buffer->vaddr + wl_offset; in etnaviv_buffer_replace_wait()
151 struct etnaviv_cmdbuf *buffer, unsigned int cmd_dwords) in etnaviv_buffer_reserve() argument
153 if (buffer->user_size + cmd_dwords * sizeof(u64) > buffer->size) in etnaviv_buffer_reserve()
154 buffer->user_size = 0; in etnaviv_buffer_reserve()
156 return etnaviv_cmdbuf_get_va(buffer, in etnaviv_buffer_reserve()
158 buffer->user_size; in etnaviv_buffer_reserve()
163 struct etnaviv_cmdbuf *buffer = &gpu->buffer; in etnaviv_buffer_init() local
168 buffer->user_size = 0; in etnaviv_buffer_init()
170 CMD_WAIT(buffer); in etnaviv_buffer_init()
171 CMD_LINK(buffer, 2, in etnaviv_buffer_init()
172 etnaviv_cmdbuf_get_va(buffer, &gpu->mmu_context->cmdbuf_mapping) in etnaviv_buffer_init()
173 + buffer->user_size - 4); in etnaviv_buffer_init()
175 return buffer->user_size / 8; in etnaviv_buffer_init()
180 struct etnaviv_cmdbuf *buffer = &gpu->buffer; in etnaviv_buffer_config_mmuv2() local
184 buffer->user_size = 0; in etnaviv_buffer_config_mmuv2()
187 CMD_LOAD_STATE(buffer, VIVS_GL_PIPE_SELECT, in etnaviv_buffer_config_mmuv2()
189 CMD_LOAD_STATE(buffer, VIVS_MMUv2_CONFIGURATION, in etnaviv_buffer_config_mmuv2()
191 CMD_LOAD_STATE(buffer, VIVS_MMUv2_SAFE_ADDRESS, safe_addr); in etnaviv_buffer_config_mmuv2()
192 CMD_SEM(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_config_mmuv2()
193 CMD_STALL(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_config_mmuv2()
197 CMD_LOAD_STATE(buffer, VIVS_GL_PIPE_SELECT, in etnaviv_buffer_config_mmuv2()
199 CMD_LOAD_STATE(buffer, VIVS_MMUv2_CONFIGURATION, in etnaviv_buffer_config_mmuv2()
201 CMD_LOAD_STATE(buffer, VIVS_MMUv2_SAFE_ADDRESS, safe_addr); in etnaviv_buffer_config_mmuv2()
202 CMD_SEM(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_config_mmuv2()
203 CMD_STALL(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_config_mmuv2()
206 CMD_END(buffer); in etnaviv_buffer_config_mmuv2()
208 buffer->user_size = ALIGN(buffer->user_size, 8); in etnaviv_buffer_config_mmuv2()
210 return buffer->user_size / 8; in etnaviv_buffer_config_mmuv2()
215 struct etnaviv_cmdbuf *buffer = &gpu->buffer; in etnaviv_buffer_config_pta() local
219 buffer->user_size = 0; in etnaviv_buffer_config_pta()
221 CMD_LOAD_STATE(buffer, VIVS_MMUv2_PTA_CONFIG, in etnaviv_buffer_config_pta()
224 CMD_END(buffer); in etnaviv_buffer_config_pta()
226 buffer->user_size = ALIGN(buffer->user_size, 8); in etnaviv_buffer_config_pta()
228 return buffer->user_size / 8; in etnaviv_buffer_config_pta()
233 struct etnaviv_cmdbuf *buffer = &gpu->buffer; in etnaviv_buffer_end() local
234 unsigned int waitlink_offset = buffer->user_size - 16; in etnaviv_buffer_end()
251 link_target = etnaviv_buffer_reserve(gpu, buffer, dwords); in etnaviv_buffer_end()
253 CMD_SEM(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_end()
254 CMD_STALL(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_end()
255 CMD_LOAD_STATE(buffer, VIVS_GL_FLUSH_CACHE, flush); in etnaviv_buffer_end()
257 CMD_LOAD_STATE(buffer, VIVS_TS_FLUSH_CACHE, in etnaviv_buffer_end()
259 CMD_SEM(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_end()
260 CMD_STALL(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_end()
261 CMD_END(buffer); in etnaviv_buffer_end()
263 etnaviv_buffer_replace_wait(buffer, waitlink_offset, in etnaviv_buffer_end()
269 etnaviv_buffer_replace_wait(buffer, waitlink_offset, in etnaviv_buffer_end()
277 struct etnaviv_cmdbuf *buffer = &gpu->buffer; in etnaviv_sync_point_queue() local
278 unsigned int waitlink_offset = buffer->user_size - 16; in etnaviv_sync_point_queue()
288 target = etnaviv_buffer_reserve(gpu, buffer, dwords); in etnaviv_sync_point_queue()
291 CMD_LOAD_STATE(buffer, VIVS_GL_EVENT, VIVS_GL_EVENT_EVENT_ID(event) | in etnaviv_sync_point_queue()
295 CMD_END(buffer); in etnaviv_sync_point_queue()
298 CMD_WAIT(buffer); in etnaviv_sync_point_queue()
299 CMD_LINK(buffer, 2, in etnaviv_sync_point_queue()
300 etnaviv_cmdbuf_get_va(buffer, &gpu->mmu_context->cmdbuf_mapping) in etnaviv_sync_point_queue()
301 + buffer->user_size - 4); in etnaviv_sync_point_queue()
307 etnaviv_buffer_replace_wait(buffer, waitlink_offset, in etnaviv_sync_point_queue()
318 struct etnaviv_cmdbuf *buffer = &gpu->buffer; in etnaviv_buffer_queue() local
319 unsigned int waitlink_offset = buffer->user_size - 16; in etnaviv_buffer_queue()
330 etnaviv_buffer_dump(gpu, buffer, 0, 0x50); in etnaviv_buffer_queue()
363 target = etnaviv_buffer_reserve(gpu, buffer, extra_dwords); in etnaviv_buffer_queue()
381 CMD_LOAD_STATE(buffer, VIVS_GL_FLUSH_MMU, in etnaviv_buffer_queue()
395 CMD_LOAD_STATE(buffer, in etnaviv_buffer_queue()
403 CMD_LOAD_STATE(buffer, VIVS_MMUv2_CONFIGURATION, in etnaviv_buffer_queue()
405 CMD_SEM(buffer, SYNC_RECIPIENT_FE, in etnaviv_buffer_queue()
407 CMD_STALL(buffer, SYNC_RECIPIENT_FE, in etnaviv_buffer_queue()
415 etnaviv_cmd_select_pipe(gpu, buffer, exec_state); in etnaviv_buffer_queue()
422 CMD_LINK(buffer, link_dwords, link_target); in etnaviv_buffer_queue()
436 return_target = etnaviv_buffer_reserve(gpu, buffer, return_dwords); in etnaviv_buffer_queue()
444 CMD_LOAD_STATE(buffer, VIVS_GL_FLUSH_CACHE, in etnaviv_buffer_queue()
447 CMD_LOAD_STATE(buffer, VIVS_GL_FLUSH_CACHE, in etnaviv_buffer_queue()
450 CMD_LOAD_STATE(buffer, VIVS_TS_FLUSH_CACHE, in etnaviv_buffer_queue()
453 CMD_SEM(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_queue()
454 CMD_STALL(buffer, SYNC_RECIPIENT_FE, SYNC_RECIPIENT_PE); in etnaviv_buffer_queue()
455 CMD_LOAD_STATE(buffer, VIVS_GL_EVENT, VIVS_GL_EVENT_EVENT_ID(event) | in etnaviv_buffer_queue()
457 CMD_WAIT(buffer); in etnaviv_buffer_queue()
458 CMD_LINK(buffer, 2, in etnaviv_buffer_queue()
459 etnaviv_cmdbuf_get_va(buffer, &gpu->mmu_context->cmdbuf_mapping) in etnaviv_buffer_queue()
460 + buffer->user_size - 4); in etnaviv_buffer_queue()
472 pr_info("link op: %p\n", buffer->vaddr + waitlink_offset); in etnaviv_buffer_queue()
482 etnaviv_buffer_replace_wait(buffer, waitlink_offset, in etnaviv_buffer_queue()
488 etnaviv_buffer_dump(gpu, buffer, 0, 0x50); in etnaviv_buffer_queue()