Lines Matching defs:task
95 lp_rast_tile_begin(struct lp_rasterizer_task *task,
99 struct lp_scene *scene = task->scene;
103 task->bin = bin;
104 task->x = x * TILE_SIZE;
105 task->y = y * TILE_SIZE;
106 task->width = TILE_SIZE + x * TILE_SIZE > scene->fb.width ?
108 task->height = TILE_SIZE + y * TILE_SIZE > scene->fb.height ?
111 task->thread_data.vis_counter = 0;
112 task->thread_data.ps_invocations = 0;
116 task->color_tiles[i] = scene->cbufs[i].map +
117 scene->cbufs[i].stride * task->y +
118 scene->cbufs[i].format_bytes * task->x;
122 task->depth_tile = scene->zsbuf.map +
123 scene->zsbuf.stride * task->y +
124 scene->zsbuf.format_bytes * task->x;
135 lp_rast_clear_color(struct lp_rasterizer_task *task,
138 const struct lp_scene *scene = task->scene;
163 task->x,
164 task->y,
166 task->width,
167 task->height,
183 lp_rast_clear_zstencil(struct lp_rasterizer_task *task,
186 const struct lp_scene *scene = task->scene;
191 const unsigned height = task->height;
192 const unsigned width = task->width;
205 task->depth_tile + (s * scene->zsbuf.sample_stride);
298 lp_rast_shade_tile(struct lp_rasterizer_task *task,
301 const struct lp_scene *scene = task->scene;
303 const unsigned tile_x = task->x, tile_y = task->y;
312 const struct lp_rast_state *state = task->state;
321 for (unsigned y = 0; y < task->height; y += 4){
322 for (unsigned x = 0; x < task->width; x += 4) {
331 color[i] = lp_rast_get_color_block_pointer(task, i, tile_x + x,
347 depth = lp_rast_get_depth_block_pointer(task, tile_x + x,
359 task->thread_data.raster_state.viewport_index = inputs->viewport_index;
360 task->thread_data.raster_state.view_index = inputs->view_index;
363 BEGIN_JIT_CALL(state, task);
373 &task->thread_data,
390 lp_rast_shade_tile_opaque(struct lp_rasterizer_task *task,
395 assert(task->state);
396 if (!task->state) {
400 lp_rast_shade_tile(task, arg);
411 lp_rast_shade_quads_mask_sample(struct lp_rasterizer_task *task,
416 const struct lp_rast_state *state = task->state;
418 const struct lp_scene *scene = task->scene;
439 color[i] = lp_rast_get_color_block_pointer(task, i, x, y,
456 depth = lp_rast_get_depth_block_pointer(task, x, y, inputs->layer + inputs->view_index);
465 if ((x % TILE_SIZE) < task->width && (y % TILE_SIZE) < task->height) {
467 task->thread_data.raster_state.viewport_index = inputs->viewport_index;
468 task->thread_data.raster_state.view_index = inputs->view_index;
471 BEGIN_JIT_CALL(state, task);
481 &task->thread_data,
492 lp_rast_shade_quads_mask(struct lp_rasterizer_task *task,
498 for (unsigned i = 0; i < task->scene->fb_max_samples; i++)
500 lp_rast_shade_quads_mask_sample(task, inputs, x, y, new_mask);
509 lp_rast_blit_tile_to_dest(struct lp_rasterizer_task *task,
512 const struct lp_scene *scene = task->scene;
514 const struct lp_rast_state *state = task->state;
541 src_x += task->x;
542 src_y += task->y;
550 task->x,
551 task->y,
552 task->width,
553 task->height,
560 src_x + task->width <= texture->width &&
561 src_y + task->height <= texture->height) {
569 task->x, task->y,
570 task->width, task->height,
578 dst += task->x * 4;
580 dst += task->y * dst_stride;
583 for (int y = 0; y < task->height; ++y) {
587 for (int x = 0; x < task->width; ++x) {
604 lp_rast_shade_tile_opaque(task, arg);
609 lp_rast_blit_tile(struct lp_rasterizer_task *task,
614 lp_rast_blit_tile_to_dest(task, arg);
624 lp_rast_begin_query(struct lp_rasterizer_task *task,
633 pq->start[task->thread_index] = task->thread_data.vis_counter;
636 pq->start[task->thread_index] = task->thread_data.ps_invocations;
639 pq->start[task->thread_index] = os_time_get_nano();
654 lp_rast_end_query(struct lp_rasterizer_task *task,
663 pq->end[task->thread_index] +=
664 task->thread_data.vis_counter - pq->start[task->thread_index];
665 pq->start[task->thread_index] = 0;
669 pq->end[task->thread_index] = os_time_get_nano();
672 pq->end[task->thread_index] +=
673 task->thread_data.ps_invocations - pq->start[task->thread_index];
674 pq->start[task->thread_index] = 0;
684 lp_rast_set_state(struct lp_rasterizer_task *task,
687 task->state = arg.set_state;
695 lp_rast_tile_end(struct lp_rasterizer_task *task)
698 for (unsigned i = 0; i < task->scene->num_active_queries; ++i) {
699 lp_rast_end_query(task,
700 lp_rast_arg_query(task->scene->active_queries[i]));
704 memset(task->color_tiles, 0, sizeof(task->color_tiles));
705 task->depth_tile = NULL;
706 task->bin = NULL;
937 blit_rasterize_bin(struct lp_rasterizer_task *task,
945 dispatch_blit[block->cmd[k]](task, block->arg[k]);
952 tri_rasterize_bin(struct lp_rasterizer_task *task,
960 dispatch_tri[block->cmd[k]](task, block->arg[k]);
967 debug_rasterize_bin(struct lp_rasterizer_task *task,
974 dispatch_tri_debug[block->cmd[k]](task, block->arg[k]);
987 rasterize_bin(struct lp_rasterizer_task *task,
992 lp_rast_tile_begin(task, bin, x, y);
995 debug_rasterize_bin(task, bin);
997 blit_rasterize_bin(task, bin);
998 } else if (task->scene->permit_linear_rasterizer &&
1001 lp_linear_rasterize_bin(task, bin);
1003 tri_rasterize_bin(task, bin, x, y);
1006 lp_rast_tile_end(task);
1042 rasterize_scene(struct lp_rasterizer_task *task,
1045 task->scene = scene;
1050 memset(task->thread_data.cache->cache_tags, 0,
1051 sizeof(task->thread_data.cache->cache_tags));
1053 task->thread_data.cache->cache_access_total = 0;
1054 task->thread_data.cache->cache_access_miss = 0;
1058 if (!task->rast->no_rast) {
1067 rasterize_bin(task, bin, i, j);
1076 total = task->thread_data.cache->cache_access_total;
1077 miss = task->thread_data.cache->cache_access_miss;
1080 task->thread_index, (long long unsigned)total,
1091 task->scene = NULL;
1170 struct lp_rasterizer_task *task = (struct lp_rasterizer_task *) init_data;
1171 struct lp_rasterizer *rast = task->rast;
1175 snprintf(thread_name, sizeof thread_name, "llvmpipe-%u", task->thread_index);
1187 debug_printf("thread %d waiting for work\n", task->thread_index);
1188 pipe_semaphore_wait(&task->work_ready);
1193 if (task->thread_index == 0) {
1208 debug_printf("thread %d doing work\n", task->thread_index);
1210 rasterize_scene(task, rast->curr_scene);
1217 if (task->thread_index == 0) {
1223 debug_printf("thread %d done working\n", task->thread_index);
1225 pipe_semaphore_signal(&task->work_done);
1229 pipe_semaphore_signal(&task->work_done);
1277 struct lp_rasterizer_task *task = &rast->tasks[i];
1278 task->rast = rast;
1279 task->thread_index = i;
1280 task->thread_data.cache =
1282 if (!task->thread_data.cache) {