Lines Matching full:tile

25  * tile (but taking care to pass the full frame stride length to
27 * to convert each tile back-to-back when possible (see note below
42 * reusable temporary tile buffer and then rotating with the 8x8
58 * With rotation or flipping, tile order changes between input and
93 /* dimensions of one tile */
103 /* start Y or packed offset of this tile */
105 /* offset from start to tile in U plane, for planar formats */
107 /* offset from start to tile in V plane, for planar formats */
123 struct ipu_image_tile tile[MAX_TILES]; member
182 /* next tile to process */
184 /* where to place converted tile in dest image */
187 /* mask of completed EOF irqs at every tile conversion */
403 * Also determine the number of tiles necessary to guarantee that no tile
443 * we were converting with a single tile. The bottom right output pixel in calc_image_resize_coefficients()
528 * Limit input seam position to make sure that the downsized input tile in find_best_seam()
563 * start the input tile at, 19.13 fixed point. in find_best_seam()
600 * Tile left edges are required to be aligned to multiples of 8 bytes
612 * Tile top edge alignment is only limited by chroma subsampling.
664 * tiles are in a row, and output tile top position and height are set.
678 in_tile = &in->tile[tile_idx]; in fill_tile_column()
679 out_tile = &out->tile[ctx->out_tile_map[tile_idx]]; in fill_tile_column()
697 * tiles are in a column, and output tile left position and width are set.
710 in_tile = &in->tile[tile_idx]; in fill_tile_row()
711 out_tile = &out->tile[ctx->out_tile_map[tile_idx]]; in fill_tile_row()
729 * top / left pixels of each tile.
865 /* Up to 4096x4096 input tile size */ in calc_tile_dimensions()
871 struct ipu_image_tile *tile; in calc_tile_dimensions() local
876 tile = &image->tile[ctx->out_tile_map[i]]; in calc_tile_dimensions()
878 tile = &image->tile[i]; in calc_tile_dimensions()
880 tile->size = ((tile->height * image->fmt->bpp) >> 3) * in calc_tile_dimensions()
881 tile->width; in calc_tile_dimensions()
884 tile->stride = tile->width; in calc_tile_dimensions()
885 tile->rot_stride = tile->height; in calc_tile_dimensions()
887 tile->stride = in calc_tile_dimensions()
888 (image->fmt->bpp * tile->width) >> 3; in calc_tile_dimensions()
889 tile->rot_stride = in calc_tile_dimensions()
890 (image->fmt->bpp * tile->height) >> 3; in calc_tile_dimensions()
898 tile->width, tile->height, tile->left, tile->top); in calc_tile_dimensions()
900 if (!tile->width || tile->width > max_width || in calc_tile_dimensions()
901 !tile->height || tile->height > max_height) { in calc_tile_dimensions()
902 dev_err(priv->ipu->dev, "invalid %s tile size: %ux%u\n", in calc_tile_dimensions()
904 "output", tile->width, tile->height); in calc_tile_dimensions()
913 * Use the rotation transformation to find the tile coordinates
914 * (row, col) of a tile in the destination frame that corresponds
915 * to the given tile coordinates of a source frame. The destination
916 * coordinate is then converted to a tile index.
969 * Fill the out_tile_map[] with transformed destination tile indeces.
974 unsigned int row, col, tile = 0; in calc_out_tile_map() local
978 ctx->out_tile_map[tile] = in calc_out_tile_map()
980 tile++; in calc_out_tile_map()
991 unsigned int row, col, tile = 0; in calc_tile_offsets_planar() local
1009 top = image->tile[tile].top; in calc_tile_offsets_planar()
1014 y_col_off = image->tile[tile].left; in calc_tile_offsets_planar()
1027 image->tile[tile].offset = y_off; in calc_tile_offsets_planar()
1028 image->tile[tile].u_off = u_off; in calc_tile_offsets_planar()
1029 image->tile[tile++].v_off = v_off; in calc_tile_offsets_planar()
1053 unsigned int row, col, tile = 0; in calc_tile_offsets_packed() local
1062 row_off = image->tile[tile].top * stride; in calc_tile_offsets_packed()
1065 col_off = (image->tile[tile].left * bpp) >> 3; in calc_tile_offsets_packed()
1069 image->tile[tile].offset = offset; in calc_tile_offsets_packed()
1070 image->tile[tile].u_off = 0; in calc_tile_offsets_packed()
1071 image->tile[tile++].v_off = 0; in calc_tile_offsets_packed()
1101 * Either round to closest for the next tile's first pixel to minimize seams
1103 * avoid sampling beyond the edges of the input image for this tile's last
1119 * Slightly modify resize coefficients per tile to hide the bilinear
1120 * interpolator reset at tile borders, shifting the right / bottom edge
1140 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1141 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1175 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1176 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1197 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1198 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1232 in_tile = &ctx->in.tile[tile_idx]; in calc_tile_resize_coefficients()
1233 out_tile = &ctx->out.tile[ctx->out_tile_map[tile_idx]]; in calc_tile_resize_coefficients()
1295 unsigned int tile) in init_idmac_channel() argument
1305 tile_idx[0] = ctx->out_tile_map[tile]; in init_idmac_channel()
1308 tile_idx[0] = tile; in init_idmac_channel()
1313 width = image->tile[tile_idx[0]].height; in init_idmac_channel()
1314 height = image->tile[tile_idx[0]].width; in init_idmac_channel()
1315 stride = image->tile[tile_idx[0]].rot_stride; in init_idmac_channel()
1320 width = image->tile[tile_idx[0]].width; in init_idmac_channel()
1321 height = image->tile[tile_idx[0]].height; in init_idmac_channel()
1324 image->tile[tile_idx[0]].offset; in init_idmac_channel()
1327 image->tile[tile_idx[1]].offset; in init_idmac_channel()
1340 tile_image.u_offset = image->tile[tile_idx[0]].u_off; in init_idmac_channel()
1341 tile_image.v_offset = image->tile[tile_idx[0]].v_off; in init_idmac_channel()
1380 static int convert_start(struct ipu_image_convert_run *run, unsigned int tile) in convert_start() argument
1387 unsigned int dst_tile = ctx->out_tile_map[tile]; in convert_start()
1393 dev_dbg(priv->ipu->dev, "%s: task %u: starting ctx %p run %p tile %u -> %u\n", in convert_start()
1394 __func__, chan->ic_task, ctx, run, tile, dst_tile); in convert_start()
1401 dest_width = d_image->tile[dst_tile].height; in convert_start()
1402 dest_height = d_image->tile[dst_tile].width; in convert_start()
1404 dest_width = d_image->tile[dst_tile].width; in convert_start()
1405 dest_height = d_image->tile[dst_tile].height; in convert_start()
1408 row = tile / s_image->num_cols; in convert_start()
1409 col = tile % s_image->num_cols; in convert_start()
1417 __func__, s_image->tile[tile].width, in convert_start()
1418 s_image->tile[tile].height, dest_width, dest_height, rsc); in convert_start()
1422 s_image->tile[tile].width, in convert_start()
1423 s_image->tile[tile].height, in convert_start()
1434 IPU_ROTATE_NONE, false, tile); in convert_start()
1439 IPU_ROTATE_NONE, true, tile); in convert_start()
1443 ctx->rot_mode, true, tile); in convert_start()
1447 IPU_ROTATE_NONE, false, tile); in convert_start()
1454 ctx->rot_mode, false, tile); in convert_start()
1624 ctx->in.tile[cur_tile].width != ctx->in.tile[next_tile].width || in ic_settings_changed()
1625 ctx->in.tile[cur_tile].height != ctx->in.tile[next_tile].height || in ic_settings_changed()
1626 ctx->out.tile[cur_tile].width != ctx->out.tile[next_tile].width || in ic_settings_changed()
1627 ctx->out.tile[cur_tile].height != ctx->out.tile[next_tile].height) in ic_settings_changed()
1673 * not done, place the next tile buffers. in do_tile_complete()
1680 src_tile = &s_image->tile[ctx->next_tile]; in do_tile_complete()
1682 dst_tile = &d_image->tile[dst_idx]; in do_tile_complete()
1704 src_tile = &s_image->tile[ctx->next_tile + 1]; in do_tile_complete()
1706 dst_tile = &d_image->tile[dst_idx]; in do_tile_complete()
1719 ctx->eof_mask = 0; /* clear EOF irq mask for next tile */ in do_tile_complete()
2175 * only one tile (the whole image can be converted in a single in ipu_image_convert_prepare()
2179 * for every tile, and therefore would have to be updated for in ipu_image_convert_prepare()
2183 * sized tiles or different resizing coefficients per tile in ipu_image_convert_prepare()
2190 if (ctx->in.tile[i].width != ctx->in.tile[0].width || in ipu_image_convert_prepare()
2191 ctx->in.tile[i].height != ctx->in.tile[0].height || in ipu_image_convert_prepare()
2192 ctx->out.tile[i].width != ctx->out.tile[0].width || in ipu_image_convert_prepare()
2193 ctx->out.tile[i].height != ctx->out.tile[0].height) { in ipu_image_convert_prepare()
2212 unsigned long intermediate_size = d_image->tile[0].size; in ipu_image_convert_prepare()
2215 if (d_image->tile[i].size > intermediate_size) in ipu_image_convert_prepare()
2216 intermediate_size = d_image->tile[i].size; in ipu_image_convert_prepare()