Lines Matching full:exec
51 struct vc4_exec_info *exec, \
106 vc4_use_bo(struct vc4_exec_info *exec, uint32_t hindex) in vc4_use_bo() argument
108 struct vc4_dev *vc4 = exec->dev; in vc4_use_bo()
115 if (hindex >= exec->bo_count) { in vc4_use_bo()
117 hindex, exec->bo_count); in vc4_use_bo()
120 obj = to_drm_gem_dma_obj(exec->bo[hindex]); in vc4_use_bo()
133 vc4_use_handle(struct vc4_exec_info *exec, uint32_t gem_handles_packet_index) in vc4_use_handle() argument
135 return vc4_use_bo(exec, exec->bo_index[gem_handles_packet_index]); in vc4_use_handle()
139 validate_bin_pos(struct vc4_exec_info *exec, void *untrusted, uint32_t pos) in validate_bin_pos() argument
144 return (untrusted - 1 == exec->bin_u + pos); in validate_bin_pos()
163 vc4_check_tex_size(struct vc4_exec_info *exec, struct drm_gem_dma_object *fbo, in vc4_check_tex_size() argument
167 struct vc4_dev *vc4 = exec->dev; in vc4_check_tex_size()
224 if (!validate_bin_pos(exec, untrusted, exec->args->bin_cl_size - 1)) { in validate_flush()
228 exec->found_flush = true; in validate_flush()
236 if (exec->found_start_tile_binning_packet) { in validate_start_tile_binning()
240 exec->found_start_tile_binning_packet = true; in validate_start_tile_binning()
242 if (!exec->found_tile_binning_mode_config_packet) { in validate_start_tile_binning()
253 if (!validate_bin_pos(exec, untrusted, exec->args->bin_cl_size - 2)) { in validate_increment_semaphore()
258 exec->found_increment_semaphore_packet = true; in validate_increment_semaphore()
274 if (exec->shader_state_count == 0) { in validate_indexed_prim_list()
278 shader_state = &exec->shader_state[exec->shader_state_count - 1]; in validate_indexed_prim_list()
283 ib = vc4_use_handle(exec, 0); in validate_indexed_prim_list()
308 if (exec->shader_state_count == 0) { in validate_gl_array_primitive()
312 shader_state = &exec->shader_state[exec->shader_state_count - 1]; in validate_gl_array_primitive()
329 uint32_t i = exec->shader_state_count++; in validate_gl_shader_state()
331 if (i >= exec->shader_state_size) { in validate_gl_shader_state()
336 exec->shader_state[i].addr = *(uint32_t *)untrusted; in validate_gl_shader_state()
337 exec->shader_state[i].max_index = 0; in validate_gl_shader_state()
339 if (exec->shader_state[i].addr & ~0xf) { in validate_gl_shader_state()
344 *(uint32_t *)validated = (exec->shader_rec_p + in validate_gl_shader_state()
345 exec->shader_state[i].addr); in validate_gl_shader_state()
347 exec->shader_rec_p += in validate_gl_shader_state()
348 roundup(gl_shader_rec_size(exec->shader_state[i].addr), 16); in validate_gl_shader_state()
356 struct drm_device *dev = exec->exec_bo->base.dev; in validate_tile_binning_config()
363 if (exec->found_tile_binning_mode_config_packet) { in validate_tile_binning_config()
367 exec->found_tile_binning_mode_config_packet = true; in validate_tile_binning_config()
369 exec->bin_tiles_x = *(uint8_t *)(untrusted + 12); in validate_tile_binning_config()
370 exec->bin_tiles_y = *(uint8_t *)(untrusted + 13); in validate_tile_binning_config()
371 tile_count = exec->bin_tiles_x * exec->bin_tiles_y; in validate_tile_binning_config()
374 if (exec->bin_tiles_x == 0 || in validate_tile_binning_config()
375 exec->bin_tiles_y == 0) { in validate_tile_binning_config()
377 exec->bin_tiles_x, exec->bin_tiles_y); in validate_tile_binning_config()
399 exec->bin_slots |= BIT(bin_slot); in validate_tile_binning_config()
408 exec->tile_alloc_offset = bin_addr + roundup(tile_state_size, 4096); in validate_tile_binning_config()
420 *(uint32_t *)(validated + 0) = exec->tile_alloc_offset; in validate_tile_binning_config()
423 exec->tile_alloc_offset); in validate_tile_binning_config()
433 memcpy(exec->bo_index, untrusted, sizeof(exec->bo_index)); in validate_gem_handles()
443 int (*func)(struct vc4_exec_info *exec, void *validated,
488 struct vc4_exec_info *exec) in vc4_validate_bin_cl() argument
491 uint32_t len = exec->args->bin_cl_size; in vc4_validate_bin_cl()
528 if (info->func && info->func(exec, in vc4_validate_bin_cl()
546 exec->ct0ea = exec->ct0ca + dst_offset; in vc4_validate_bin_cl()
548 if (!exec->found_start_tile_binning_packet) { in vc4_validate_bin_cl()
560 if (!exec->found_increment_semaphore_packet || !exec->found_flush) { in vc4_validate_bin_cl()
570 reloc_tex(struct vc4_exec_info *exec, in reloc_tex() argument
582 uint32_t *validated_p0 = exec->uniforms_v + sample->p_offset[0]; in reloc_tex()
592 tex = vc4_use_bo(exec, texture_handle_index); in reloc_tex()
687 if (!vc4_check_tex_size(exec, tex, offset + cube_map_stride * 5, in reloc_tex()
749 struct vc4_exec_info *exec, in validate_gl_shader_rec() argument
770 if (nr_relocs * 4 > exec->shader_rec_size) { in validate_gl_shader_rec()
773 nr_relocs, exec->shader_rec_size); in validate_gl_shader_rec()
776 src_handles = exec->shader_rec_u; in validate_gl_shader_rec()
777 exec->shader_rec_u += nr_relocs * 4; in validate_gl_shader_rec()
778 exec->shader_rec_size -= nr_relocs * 4; in validate_gl_shader_rec()
780 if (packet_size > exec->shader_rec_size) { in validate_gl_shader_rec()
783 packet_size, exec->shader_rec_size); in validate_gl_shader_rec()
786 pkt_u = exec->shader_rec_u; in validate_gl_shader_rec()
787 pkt_v = exec->shader_rec_v; in validate_gl_shader_rec()
789 exec->shader_rec_u += packet_size; in validate_gl_shader_rec()
796 exec->shader_rec_v += roundup(packet_size, 16); in validate_gl_shader_rec()
797 exec->shader_rec_size -= packet_size; in validate_gl_shader_rec()
800 if (src_handles[i] > exec->bo_count) { in validate_gl_shader_rec()
805 bo[i] = to_drm_gem_dma_obj(exec->bo[src_handles[i]]); in validate_gl_shader_rec()
810 bo[i] = vc4_use_bo(exec, src_handles[i]); in validate_gl_shader_rec()
848 exec->uniforms_size) { in validate_gl_shader_rec()
853 texture_handles_u = exec->uniforms_u; in validate_gl_shader_rec()
857 memcpy(exec->uniforms_v, uniform_data_u, in validate_gl_shader_rec()
863 if (!reloc_tex(exec, in validate_gl_shader_rec()
880 ((uint32_t *)exec->uniforms_v)[o] = exec->uniforms_p; in validate_gl_shader_rec()
883 *(uint32_t *)(pkt_v + o + 4) = exec->uniforms_p; in validate_gl_shader_rec()
885 exec->uniforms_u += validated_shader->uniforms_src_size; in validate_gl_shader_rec()
886 exec->uniforms_v += validated_shader->uniforms_size; in validate_gl_shader_rec()
887 exec->uniforms_p += validated_shader->uniforms_size; in validate_gl_shader_rec()
928 struct vc4_exec_info *exec) in vc4_validate_shader_recs() argument
937 for (i = 0; i < exec->shader_state_count; i++) { in vc4_validate_shader_recs()
938 ret = validate_gl_shader_rec(dev, exec, &exec->shader_state[i]); in vc4_validate_shader_recs()