Lines Matching refs:cl
49 static inline void cl_pack_emit_reloc(struct v3d_cl *cl, const struct v3d_cl_reloc *);
56 #define __gen_unpack_address(cl, s, e) __unpack_address(cl, s, e)
59 __unpack_address(const uint8_t *cl, uint32_t s, uint32_t e)
62 { NULL, __gen_unpack_uint(cl, s, e) << (31 - (e - s)) };
74 void v3d_init_cl(struct v3d_job *job, struct v3d_cl *cl);
75 void v3d_destroy_cl(struct v3d_cl *cl);
76 void v3d_dump_cl(void *cl, uint32_t size, bool is_render);
82 static inline uint32_t cl_offset(struct v3d_cl *cl)
84 return (char *)cl->next - (char *)cl->base;
87 static inline struct v3d_cl_reloc cl_get_address(struct v3d_cl *cl)
89 return (struct v3d_cl_reloc){ .bo = cl->bo, .offset = cl_offset(cl) };
93 cl_advance(struct v3d_cl_out **cl, uint32_t n)
95 (*cl) = (struct v3d_cl_out *)((char *)(*cl) + n);
99 cl_start(struct v3d_cl *cl)
101 return cl->next;
105 cl_end(struct v3d_cl *cl, struct v3d_cl_out *next)
107 cl->next = next;
108 assert(cl_offset(cl) <= cl->size);
127 cl_u8(struct v3d_cl_out **cl, uint8_t n)
129 *(uint8_t *)(*cl) = n;
130 cl_advance(cl, 1);
134 cl_u16(struct v3d_cl_out **cl, uint16_t n)
136 put_unaligned_16(*cl, n);
137 cl_advance(cl, 2);
141 cl_u32(struct v3d_cl_out **cl, uint32_t n)
143 put_unaligned_32(*cl, n);
144 cl_advance(cl, 4);
148 cl_aligned_u32(struct v3d_cl_out **cl, uint32_t n)
150 *(uint32_t *)(*cl) = n;
151 cl_advance(cl, 4);
155 cl_aligned_reloc(struct v3d_cl *cl,
160 v3d_job_add_bo(cl->job, bo);
164 cl_ptr(struct v3d_cl_out **cl, void *ptr)
166 *(struct v3d_cl_out **)(*cl) = ptr;
167 cl_advance(cl, sizeof(void *));
171 cl_f(struct v3d_cl_out **cl, float f)
173 cl_u32(cl, fui(f));
177 cl_aligned_f(struct v3d_cl_out **cl, float f)
179 cl_aligned_u32(cl, fui(f));
195 uint32_t v3d_cl_ensure_space(struct v3d_cl *cl, uint32_t size, uint32_t align);
196 void v3d_cl_ensure_space_with_branch(struct v3d_cl *cl, uint32_t size);
204 cl_get_emit_space(struct v3d_cl_out **cl, size_t size)
206 void *addr = *cl;
207 cl_advance(cl, size);
225 #define cl_emit(cl, packet, name) \
232 struct v3d_cl_out *cl_out = cl_start(cl); \
233 cl_packet_pack(packet)(cl, (uint8_t *)cl_out, &name); \
235 cl_end(cl, cl_out); \
239 #define cl_emit_with_prepacked(cl, packet, prepacked, name) \
246 struct v3d_cl_out *cl_out = cl_start(cl); \
248 cl_packet_pack(packet)(cl, packed, &name); \
252 cl_end(cl, cl_out); \
256 #define cl_emit_prepacked_sized(cl, packet, size) do { \
257 memcpy((cl)->next, packet, size); \
258 cl_advance(&(cl)->next, size); \
261 #define cl_emit_prepacked(cl, packet) \
262 cl_emit_prepacked_sized(cl, packet, sizeof(*(packet)))
286 cl_pack_emit_reloc(struct v3d_cl *cl, const struct v3d_cl_reloc *reloc)
289 v3d_job_add_bo(cl->job, reloc->bo);