Lines Matching refs:exec

51 	struct vc4_exec_info *exec,			\
106 vc4_use_bo(struct vc4_exec_info *exec, uint32_t hindex)
108 struct vc4_dev *vc4 = exec->dev;
115 if (hindex >= exec->bo_count) {
117 hindex, exec->bo_count);
120 obj = to_drm_gem_dma_obj(exec->bo[hindex]);
133 vc4_use_handle(struct vc4_exec_info *exec, uint32_t gem_handles_packet_index)
135 return vc4_use_bo(exec, exec->bo_index[gem_handles_packet_index]);
139 validate_bin_pos(struct vc4_exec_info *exec, void *untrusted, uint32_t pos)
144 return (untrusted - 1 == exec->bin_u + pos);
163 vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_dma_object *fbo,
167 struct vc4_dev *vc4 = exec->dev;
224 if (!validate_bin_pos(exec, untrusted, exec->args->bin_cl_size - 1)) {
228 exec->found_flush = true;
236 if (exec->found_start_tile_binning_packet) {
240 exec->found_start_tile_binning_packet = true;
242 if (!exec->found_tile_binning_mode_config_packet) {
253 if (!validate_bin_pos(exec, untrusted, exec->args->bin_cl_size - 2)) {
258 exec->found_increment_semaphore_packet = true;
274 if (exec->shader_state_count == 0) {
278 shader_state = &exec->shader_state[exec->shader_state_count - 1];
283 ib = vc4_use_handle(exec, 0);
287 exec->bin_dep_seqno = max(exec->bin_dep_seqno,
311 if (exec->shader_state_count == 0) {
315 shader_state = &exec->shader_state[exec->shader_state_count - 1];
332 uint32_t i = exec->shader_state_count++;
334 if (i >= exec->shader_state_size) {
339 exec->shader_state[i].addr = *(uint32_t *)untrusted;
340 exec->shader_state[i].max_index = 0;
342 if (exec->shader_state[i].addr & ~0xf) {
347 *(uint32_t *)validated = (exec->shader_rec_p +
348 exec->shader_state[i].addr);
350 exec->shader_rec_p +=
351 roundup(gl_shader_rec_size(exec->shader_state[i].addr), 16);
359 struct drm_device *dev = exec->exec_bo->base.dev;
366 if (exec->found_tile_binning_mode_config_packet) {
370 exec->found_tile_binning_mode_config_packet = true;
372 exec->bin_tiles_x = *(uint8_t *)(untrusted + 12);
373 exec->bin_tiles_y = *(uint8_t *)(untrusted + 13);
374 tile_count = exec->bin_tiles_x * exec->bin_tiles_y;
377 if (exec->bin_tiles_x == 0 ||
378 exec->bin_tiles_y == 0) {
380 exec->bin_tiles_x, exec->bin_tiles_y);
402 exec->bin_slots |= BIT(bin_slot);
411 exec->tile_alloc_offset = bin_addr + roundup(tile_state_size, 4096);
423 *(uint32_t *)(validated + 0) = exec->tile_alloc_offset;
426 exec->tile_alloc_offset);
436 memcpy(exec->bo_index, untrusted, sizeof(exec->bo_index));
446 int (*func)(struct vc4_exec_info *exec, void *validated,
491 struct vc4_exec_info *exec)
494 uint32_t len = exec->args->bin_cl_size;
531 if (info->func && info->func(exec,
549 exec->ct0ea = exec->ct0ca + dst_offset;
551 if (!exec->found_start_tile_binning_packet) {
563 if (!exec->found_increment_semaphore_packet || !exec->found_flush) {
573 reloc_tex(struct vc4_exec_info *exec,
585 uint32_t *validated_p0 = exec->uniforms_v + sample->p_offset[0];
595 tex = vc4_use_bo(exec, texture_handle_index);
690 if (!vc4_check_tex_size(exec, tex, offset + cube_map_stride * 5,
742 exec->bin_dep_seqno = max(exec->bin_dep_seqno,
757 struct vc4_exec_info *exec,
778 if (nr_relocs * 4 > exec->shader_rec_size) {
781 nr_relocs, exec->shader_rec_size);
784 src_handles = exec->shader_rec_u;
785 exec->shader_rec_u += nr_relocs * 4;
786 exec->shader_rec_size -= nr_relocs * 4;
788 if (packet_size > exec->shader_rec_size) {
791 packet_size, exec->shader_rec_size);
794 pkt_u = exec->shader_rec_u;
795 pkt_v = exec->shader_rec_v;
797 exec->shader_rec_u += packet_size;
804 exec->shader_rec_v += roundup(packet_size, 16);
805 exec->shader_rec_size -= packet_size;
808 if (src_handles[i] > exec->bo_count) {
813 bo[i] = to_drm_gem_dma_obj(exec->bo[src_handles[i]]);
818 bo[i] = vc4_use_bo(exec, src_handles[i]);
856 exec->uniforms_size) {
861 texture_handles_u = exec->uniforms_u;
865 memcpy(exec->uniforms_v, uniform_data_u,
871 if (!reloc_tex(exec,
888 ((uint32_t *)exec->uniforms_v)[o] = exec->uniforms_p;
891 *(uint32_t *)(pkt_v + o + 4) = exec->uniforms_p;
893 exec->uniforms_u += validated_shader->uniforms_src_size;
894 exec->uniforms_v += validated_shader->uniforms_size;
895 exec->uniforms_p += validated_shader->uniforms_size;
907 exec->bin_dep_seqno = max(exec->bin_dep_seqno,
939 struct vc4_exec_info *exec)
948 for (i = 0; i < exec->shader_state_count; i++) {
949 ret = validate_gl_shader_rec(dev, exec, &exec->shader_state[i]);