Lines Matching refs:ring

113 cs_program_emit(struct fd_ringbuffer *ring, struct kernel *kernel)
121 OUT_PKT4(ring, REG_A6XX_SP_MODE_CONTROL, 1);
122 OUT_RING(ring, A6XX_SP_MODE_CONTROL_CONSTANT_DEMOTION_ENABLE | 4);
124 OUT_PKT4(ring, REG_A6XX_SP_PERFCTR_ENABLE, 1);
125 OUT_RING(ring, A6XX_SP_PERFCTR_ENABLE_CS);
127 OUT_PKT4(ring, REG_A6XX_SP_FLOAT_CNTL, 1);
128 OUT_RING(ring, 0);
130 OUT_PKT4(ring, REG_A6XX_HLSQ_INVALIDATE_CMD, 1);
132 ring,
139 OUT_PKT4(ring, REG_A6XX_HLSQ_CS_CNTL, 1);
140 OUT_RING(ring,
143 OUT_PKT4(ring, REG_A6XX_SP_CS_CONFIG, 2);
144 OUT_RING(ring, A6XX_SP_CS_CONFIG_ENABLED |
148 OUT_RING(ring, v->instrlen); /* SP_VS_INSTRLEN */
150 OUT_PKT4(ring, REG_A6XX_SP_CS_CTRL_REG0, 1);
151 OUT_RING(ring,
159 OUT_PKT4(ring, REG_A6XX_SP_CS_UNKNOWN_A9B1, 1);
160 OUT_RING(ring, 0x41);
163 OUT_PKT4(ring, REG_A6XX_HLSQ_CS_UNKNOWN_B9D0, 1);
164 OUT_RING(ring, A6XX_HLSQ_CS_UNKNOWN_B9D0_SHARED_SIZE(1) |
173 OUT_PKT4(ring, REG_A6XX_HLSQ_CS_CNTL_0, 2);
174 OUT_RING(ring, A6XX_HLSQ_CS_CNTL_0_WGIDCONSTID(work_group_id) |
178 OUT_RING(ring, A6XX_HLSQ_CS_CNTL_1_LINEARLOCALIDREGID(regid(63, 0)) |
182 OUT_PKT4(ring, REG_A6XX_SP_CS_CNTL_0, 2);
183 OUT_RING(ring, A6XX_SP_CS_CNTL_0_WGIDCONSTID(work_group_id) |
187 OUT_RING(ring, A6XX_SP_CS_CNTL_1_LINEARLOCALIDREGID(regid(63, 0)) |
191 OUT_PKT4(ring, REG_A6XX_SP_CS_OBJ_START, 2);
192 OUT_RELOC(ring, v->bo, 0, 0, 0); /* SP_CS_OBJ_START_LO/HI */
194 OUT_PKT4(ring, REG_A6XX_SP_CS_INSTRLEN, 1);
195 OUT_RING(ring, v->instrlen);
197 OUT_PKT4(ring, REG_A6XX_SP_CS_OBJ_START, 2);
198 OUT_RELOC(ring, v->bo, 0, 0, 0);
202 OUT_PKT7(ring, CP_LOAD_STATE6_FRAG, 3);
203 OUT_RING(ring, CP_LOAD_STATE6_0_DST_OFF(0) |
208 OUT_RELOC(ring, v->bo, 0, 0, 0);
217 OUT_PKT4(ring, REG_A6XX_SP_CS_PVT_MEM_PARAM, 4);
218 OUT_RING(ring, A6XX_SP_CS_PVT_MEM_PARAM_MEMSIZEPERITEM(per_fiber_size));
219 OUT_RELOC(ring, pvtmem, 0, 0, 0);
220 OUT_RING(ring, A6XX_SP_CS_PVT_MEM_SIZE_TOTALPVTMEMSIZE(per_sp_size) |
224 OUT_PKT4(ring, REG_A6XX_SP_CS_PVT_MEM_HW_STACK_OFFSET, 1);
225 OUT_RING(ring, A6XX_SP_CS_PVT_MEM_HW_STACK_OFFSET_OFFSET(per_sp_size));
230 emit_const(struct fd_ringbuffer *ring, uint32_t regid, uint32_t sizedwords,
239 OUT_PKT7(ring, CP_LOAD_STATE6_FRAG, 3 + align_sz);
240 OUT_RING(ring, CP_LOAD_STATE6_0_DST_OFF(regid / 4) |
245 OUT_RING(ring, CP_LOAD_STATE6_1_EXT_SRC_ADDR(0));
246 OUT_RING(ring, CP_LOAD_STATE6_2_EXT_SRC_ADDR_HI(0));
249 OUT_RING(ring, dwords[i]);
254 OUT_RING(ring, 0);
259 cs_const_emit(struct fd_ringbuffer *ring, struct kernel *kernel,
299 emit_const(ring, base, size, const_state->immediates);
304 cs_ibo_emit(struct fd_ringbuffer *ring, struct fd_submit *submit,
336 OUT_PKT7(ring, CP_LOAD_STATE6_FRAG, 3);
337 OUT_RING(ring, CP_LOAD_STATE6_0_DST_OFF(0) |
342 OUT_RB(ring, state);
344 OUT_PKT4(ring, REG_A6XX_SP_CS_IBO, 2);
345 OUT_RB(ring, state);
347 OUT_PKT4(ring, REG_A6XX_SP_CS_IBO_COUNT, 1);
348 OUT_RING(ring, kernel->num_bufs);
354 event_write(struct fd_ringbuffer *ring, struct kernel *kernel,
359 OUT_PKT7(ring, CP_EVENT_WRITE, timestamp ? 4 : 1);
360 OUT_RING(ring, CP_EVENT_WRITE_0_EVENT(evt));
365 OUT_RELOC(ring, control_ptr(a6xx_backend, seqno)); /* ADDR_LO/HI */
366 OUT_RING(ring, seqno);
373 cache_flush(struct fd_ringbuffer *ring, struct kernel *kernel)
379 seqno = event_write(ring, kernel, RB_DONE_TS, true);
381 OUT_PKT7(ring, CP_WAIT_REG_MEM, 6);
382 OUT_RING(ring, CP_WAIT_REG_MEM_0_FUNCTION(WRITE_EQ) |
384 OUT_RELOC(ring, control_ptr(a6xx_backend, seqno));
385 OUT_RING(ring, CP_WAIT_REG_MEM_3_REF(seqno));
386 OUT_RING(ring, CP_WAIT_REG_MEM_4_MASK(~0));
387 OUT_RING(ring, CP_WAIT_REG_MEM_5_DELAY_LOOP_CYCLES(16));
389 seqno = event_write(ring, kernel, CACHE_FLUSH_TS, true);
391 OUT_PKT7(ring, CP_WAIT_MEM_GTE, 4);
392 OUT_RING(ring, CP_WAIT_MEM_GTE_0_RESERVED(0));
393 OUT_RELOC(ring, control_ptr(a6xx_backend, seqno));
394 OUT_RING(ring, CP_WAIT_MEM_GTE_3_REF(seqno));
403 struct fd_ringbuffer *ring = fd_submit_new_ringbuffer(
406 cs_program_emit(ring, kernel);
407 cs_const_emit(ring, kernel, grid);
408 cs_ibo_emit(ring, submit, kernel);
410 OUT_PKT7(ring, CP_SET_MARKER, 1);
411 OUT_RING(ring, A6XX_CP_SET_MARKER_0_MODE(RM6_COMPUTE));
423 OUT_PKT4(ring, REG_A6XX_HLSQ_CS_NDRANGE_0, 7);
424 OUT_RING(ring, A6XX_HLSQ_CS_NDRANGE_0_KERNELDIM(work_dim) |
428 OUT_RING(ring,
430 OUT_RING(ring, 0); /* HLSQ_CS_NDRANGE_2_GLOBALOFF_X */
431 OUT_RING(ring,
433 OUT_RING(ring, 0); /* HLSQ_CS_NDRANGE_4_GLOBALOFF_Y */
434 OUT_RING(ring,
436 OUT_RING(ring, 0); /* HLSQ_CS_NDRANGE_6_GLOBALOFF_Z */
438 OUT_PKT4(ring, REG_A6XX_HLSQ_CS_KERNEL_GROUP_X, 3);
439 OUT_RING(ring, 1); /* HLSQ_CS_KERNEL_GROUP_X */
440 OUT_RING(ring, 1); /* HLSQ_CS_KERNEL_GROUP_Y */
441 OUT_RING(ring, 1); /* HLSQ_CS_KERNEL_GROUP_Z */
454 OUT_PKT4(ring, counter->select_reg, 1);
455 OUT_RING(ring, counter->selector);
458 OUT_PKT7(ring, CP_WAIT_FOR_IDLE, 0);
464 OUT_PKT7(ring, CP_REG_TO_MEM, 3);
465 OUT_RING(ring, CP_REG_TO_MEM_0_64B |
467 OUT_RELOC(ring, query_sample_idx(a6xx_backend, i, start));
471 OUT_PKT7(ring, CP_EXEC_CS, 4);
472 OUT_RING(ring, 0x00000000);
473 OUT_RING(ring, CP_EXEC_CS_1_NGROUPS_X(grid[0]));
474 OUT_RING(ring, CP_EXEC_CS_2_NGROUPS_Y(grid[1]));
475 OUT_RING(ring, CP_EXEC_CS_3_NGROUPS_Z(grid[2]));
477 OUT_PKT7(ring, CP_WAIT_FOR_IDLE, 0);
484 OUT_PKT7(ring, CP_REG_TO_MEM, 3);
485 OUT_RING(ring, CP_REG_TO_MEM_0_64B |
487 OUT_RELOC(ring, query_sample_idx(a6xx_backend, i, stop));
493 OUT_PKT7(ring, CP_MEM_TO_MEM, 9);
494 OUT_RING(ring, CP_MEM_TO_MEM_0_DOUBLE | CP_MEM_TO_MEM_0_NEG_C);
495 OUT_RELOC(ring, query_sample_idx(a6xx_backend, i, result)); /* dst */
496 OUT_RELOC(ring, query_sample_idx(a6xx_backend, i, result)); /* srcA */
497 OUT_RELOC(ring, query_sample_idx(a6xx_backend, i, stop)); /* srcB */
498 OUT_RELOC(ring, query_sample_idx(a6xx_backend, i, start)); /* srcC */
502 cache_flush(ring, kernel);