Lines Matching full:tile

28  * tile (but taking care to pass the full frame stride length to
30 * to convert each tile back-to-back when possible (see note below
45 * reusable temporary tile buffer and then rotating with the 8x8
61 * With rotation or flipping, tile order changes between input and
96 /* dimensions of one tile */
106 /* start Y or packed offset of this tile */
108 /* offset from start to tile in U plane, for planar formats */
110 /* offset from start to tile in V plane, for planar formats */
126 struct ipu_image_tile tile[MAX_TILES]; member
185 /* next tile to process */
187 /* where to place converted tile in dest image */
190 /* mask of completed EOF irqs at every tile conversion */
406 * Also determine the number of tiles necessary to guarantee that no tile
446 * we were converting with a single tile. The bottom right output pixel in calc_image_resize_coefficients()
531 * Limit input seam position to make sure that the downsized input tile in find_best_seam()
566 * start the input tile at, 19.13 fixed point. in find_best_seam()
599 * Tile left edges are required to be aligned to multiples of 8 bytes
611 * Tile top edge alignment is only limited by chroma subsampling.
663 * tiles are in a row, and output tile top position and height are set.
677 in_tile = &in->tile[tile_idx]; in fill_tile_column()
678 out_tile = &out->tile[ctx->out_tile_map[tile_idx]]; in fill_tile_column()
696 * tiles are in a column, and output tile left position and width are set.
709 in_tile = &in->tile[tile_idx]; in fill_tile_row()
710 out_tile = &out->tile[ctx->out_tile_map[tile_idx]]; in fill_tile_row()
728 * top / left pixels of each tile.
864 /* Up to 4096x4096 input tile size */ in calc_tile_dimensions()
870 struct ipu_image_tile *tile; in calc_tile_dimensions() local
875 tile = &image->tile[ctx->out_tile_map[i]]; in calc_tile_dimensions()
877 tile = &image->tile[i]; in calc_tile_dimensions()
879 tile->size = ((tile->height * image->fmt->bpp) >> 3) * in calc_tile_dimensions()
880 tile->width; in calc_tile_dimensions()
883 tile->stride = tile->width; in calc_tile_dimensions()
884 tile->rot_stride = tile->height; in calc_tile_dimensions()
886 tile->stride = in calc_tile_dimensions()
887 (image->fmt->bpp * tile->width) >> 3; in calc_tile_dimensions()
888 tile->rot_stride = in calc_tile_dimensions()
889 (image->fmt->bpp * tile->height) >> 3; in calc_tile_dimensions()
897 tile->width, tile->height, tile->left, tile->top); in calc_tile_dimensions()
899 if (!tile->width || tile->width > max_width || in calc_tile_dimensions()
900 !tile->height || tile->height > max_height) { in calc_tile_dimensions()
901 dev_err(priv->ipu->dev, "invalid %s tile size: %ux%u\n", in calc_tile_dimensions()
903 "output", tile->width, tile->height); in calc_tile_dimensions()
912 * Use the rotation transformation to find the tile coordinates
913 * (row, col) of a tile in the destination frame that corresponds
914 * to the given tile coordinates of a source frame. The destination
915 * coordinate is then converted to a tile index.
968 * Fill the out_tile_map[] with transformed destination tile indeces.
973 unsigned int row, col, tile = 0; in calc_out_tile_map() local
977 ctx->out_tile_map[tile] = in calc_out_tile_map()
979 tile++; in calc_out_tile_map()
990 unsigned int row, col, tile = 0; in calc_tile_offsets_planar() local
1008 top = image->tile[tile].top; in calc_tile_offsets_planar()
1013 y_col_off = image->tile[tile].left; in calc_tile_offsets_planar()
1026 image->tile[tile].offset = y_off; in calc_tile_offsets_planar()
1027 image->tile[tile].u_off = u_off; in calc_tile_offsets_planar()
1028 image->tile[tile++].v_off = v_off; in calc_tile_offsets_planar()
1052 unsigned int row, col, tile = 0; in calc_tile_offsets_packed() local
1061 row_off = image->tile[tile].top * stride; in calc_tile_offsets_packed()
1064 col_off = (image->tile[tile].left * bpp) >> 3; in calc_tile_offsets_packed()
1068 image->tile[tile].offset = offset; in calc_tile_offsets_packed()
1069 image->tile[tile].u_off = 0; in calc_tile_offsets_packed()
1070 image->tile[tile++].v_off = 0; in calc_tile_offsets_packed()
1100 * Either round to closest for the next tile's first pixel to minimize seams
1102 * avoid sampling beyond the edges of the input image for this tile's last
1118 * Slightly modify resize coefficients per tile to hide the bilinear
1119 * interpolator reset at tile borders, shifting the right / bottom edge
1139 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1140 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1174 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1175 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1196 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1197 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1231 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1232 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1294 unsigned int tile) in init_idmac_channel() argument
1304 tile_idx[0] = ctx->out_tile_map[tile]; in init_idmac_channel()
1307 tile_idx[0] = tile; in init_idmac_channel()
1312 width = image->tile[tile_idx[0]].height; in init_idmac_channel()
1313 height = image->tile[tile_idx[0]].width; in init_idmac_channel()
1314 stride = image->tile[tile_idx[0]].rot_stride; in init_idmac_channel()
1319 width = image->tile[tile_idx[0]].width; in init_idmac_channel()
1320 height = image->tile[tile_idx[0]].height; in init_idmac_channel()
1323 image->tile[tile_idx[0]].offset; in init_idmac_channel()
1326 image->tile[tile_idx[1]].offset; in init_idmac_channel()
1339 tile_image.u_offset = image->tile[tile_idx[0]].u_off; in init_idmac_channel()
1340 tile_image.v_offset = image->tile[tile_idx[0]].v_off; in init_idmac_channel()
1379 static int convert_start(struct ipu_image_convert_run *run, unsigned int tile) in convert_start() argument
1386 unsigned int dst_tile = ctx->out_tile_map[tile]; in convert_start()
1392 dev_dbg(priv->ipu->dev, "%s: task %u: starting ctx %p run %p tile %u -> %u\n", in convert_start()
1393 __func__, chan->ic_task, ctx, run, tile, dst_tile); in convert_start()
1400 dest_width = d_image->tile[dst_tile].height; in convert_start()
1401 dest_height = d_image->tile[dst_tile].width; in convert_start()
1403 dest_width = d_image->tile[dst_tile].width; in convert_start()
1404 dest_height = d_image->tile[dst_tile].height; in convert_start()
1407 row = tile / s_image->num_cols; in convert_start()
1408 col = tile % s_image->num_cols; in convert_start()
1416 __func__, s_image->tile[tile].width, in convert_start()
1417 s_image->tile[tile].height, dest_width, dest_height, rsc); in convert_start()
1421 s_image->tile[tile].width, in convert_start()
1422 s_image->tile[tile].height, in convert_start()
1433 IPU_ROTATE_NONE, false, tile); in convert_start()
1438 IPU_ROTATE_NONE, true, tile); in convert_start()
1442 ctx->rot_mode, true, tile); in convert_start()
1446 IPU_ROTATE_NONE, false, tile); in convert_start()
1453 ctx->rot_mode, false, tile); in convert_start()
1623 ctx->in.tile[cur_tile].width != ctx->in.tile[next_tile].width || in ic_settings_changed()
1624 ctx->in.tile[cur_tile].height != ctx->in.tile[next_tile].height || in ic_settings_changed()
1625 ctx->out.tile[cur_tile].width != ctx->out.tile[next_tile].width || in ic_settings_changed()
1626 ctx->out.tile[cur_tile].height != ctx->out.tile[next_tile].height) in ic_settings_changed()
1672 * not done, place the next tile buffers. in do_tile_complete()
1679 src_tile = &s_image->tile[ctx->next_tile]; in do_tile_complete()
1681 dst_tile = &d_image->tile[dst_idx]; in do_tile_complete()
1703 src_tile = &s_image->tile[ctx->next_tile + 1]; in do_tile_complete()
1705 dst_tile = &d_image->tile[dst_idx]; in do_tile_complete()
1718 ctx->eof_mask = 0; /* clear EOF irq mask for next tile */ in do_tile_complete()
2174 * only one tile (the whole image can be converted in a single in ipu_image_convert_prepare()
2178 * for every tile, and therefore would have to be updated for in ipu_image_convert_prepare()
2182 * sized tiles or different resizing coefficients per tile in ipu_image_convert_prepare()
2189 if (ctx->in.tile[i].width != ctx->in.tile[0].width || in ipu_image_convert_prepare()
2190 ctx->in.tile[i].height != ctx->in.tile[0].height || in ipu_image_convert_prepare()
2191 ctx->out.tile[i].width != ctx->out.tile[0].width || in ipu_image_convert_prepare()
2192 ctx->out.tile[i].height != ctx->out.tile[0].height) { in ipu_image_convert_prepare()
2211 unsigned long intermediate_size = d_image->tile[0].size; in ipu_image_convert_prepare()
2214 if (d_image->tile[i].size > intermediate_size) in ipu_image_convert_prepare()
2215 intermediate_size = d_image->tile[i].size; in ipu_image_convert_prepare()