STRUCT PISP_TILE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct pisp_tile(9) β€” Raspberry Pi PiSP Back End tile configuration

okay so bestie, welcome to the Kernel API Manual ✨ this one's all about struct pisp_tile β€” the Raspberry Pi PiSP Back End tile configuration. it's giving "tiny rectangle of image, but make it a data structure" and honestly? iconic. πŸŽ€


🌸 SYNOPSIS 🌸

struct pisp_tile {
    __u8 edge;
    __u8 pad0[3];
    __u32 input_addr_offset;
    __u32 input_addr_offset2;
    __u16 input_offset_x;
    __u16 input_offset_y;
    __u16 input_width;
    __u16 input_height;
    __u32 tdn_input_addr_offset;
    __u32 tdn_output_addr_offset;
    __u32 stitch_input_addr_offset;
    __u32 stitch_output_addr_offset;
    __u32 lsc_grid_offset_x;
    __u32 lsc_grid_offset_y;
    __u32 cac_grid_offset_x;
    __u32 cac_grid_offset_y;
    __u16 crop_x_start[PISP_BACK_END_NUM_OUTPUTS];
    __u16 crop_x_end[PISP_BACK_END_NUM_OUTPUTS];
    __u16 crop_y_start[PISP_BACK_END_NUM_OUTPUTS];
    __u16 crop_y_end[PISP_BACK_END_NUM_OUTPUTS];
    __u16 downscale_phase_x[3 * PISP_BACK_END_NUM_OUTPUTS];
    __u16 downscale_phase_y[3 * PISP_BACK_END_NUM_OUTPUTS];
    __u16 resample_in_width[PISP_BACK_END_NUM_OUTPUTS];
    __u16 resample_in_height[PISP_BACK_END_NUM_OUTPUTS];
    __u16 resample_phase_x[3 * PISP_BACK_END_NUM_OUTPUTS];
    __u16 resample_phase_y[3 * PISP_BACK_END_NUM_OUTPUTS];
    __u16 output_offset_x[PISP_BACK_END_NUM_OUTPUTS];
    __u16 output_offset_y[PISP_BACK_END_NUM_OUTPUTS];
    __u16 output_width[PISP_BACK_END_NUM_OUTPUTS];
    __u16 output_height[PISP_BACK_END_NUM_OUTPUTS];
    __u32 output_addr_offset[PISP_BACK_END_NUM_OUTPUTS];
    __u32 output_addr_offset2[PISP_BACK_END_NUM_OUTPUTS];
    __u32 output_hog_addr_offset;
};

like, look at all those fields. she's detailed. πŸ’…


πŸ¦‹ Members πŸ¦‹

okay this is the part where we go field by field, no skipping, no cap:

  • edge β€” the edge tile flag 🫢 (yes, she's flagged as an edge tile)
  • pad0 β€” padding bytes, just vibing there for alignment ✨
  • input_addr_offset β€” top-left pixel offset, in bytes
  • input_addr_offset2 β€” top-left pixel offset, in bytes, but for the second/third image planes
  • input_offset_x β€” horizontal offset in pixels of this tile in the input image
  • input_offset_y β€” vertical offset in pixels of this tile in the input image
  • input_width β€” width in pixels of this tile
  • input_height β€” height in pixels of the this tile (yes, "the this", we keep it, she said what she said 😭)
  • tdn_input_addr_offset β€” TDN input image offset, in bytes
  • tdn_output_addr_offset β€” TDN output image offset, in bytes
  • stitch_input_addr_offset β€” Stitch input image offset, in bytes
  • stitch_output_addr_offset β€” Stitch output image offset, in bytes
  • lsc_grid_offset_x β€” horizontal offset in the LSC table for this tile
  • lsc_grid_offset_y β€” vertical offset in the LSC table for this tile
  • cac_grid_offset_x β€” horizontal offset in the CAC table for this tile
  • cac_grid_offset_y β€” vertical offset in the CAC table for this tile
  • crop_x_start β€” number of pixels cropped from the left of the tile
  • crop_x_end β€” number of pixels cropped from the right of the tile
  • crop_y_start β€” number of pixels cropped from the top of the tile
  • crop_y_end β€” number of pixels cropped from the bottom of the tile
  • downscale_phase_x β€” initial horizontal phase in pixels
  • downscale_phase_y β€” initial vertical phase in pixels
  • resample_in_width β€” width in pixels of the tile entering the Resample block
  • resample_in_height β€” height in pixels of the tile entering the Resample block
  • resample_phase_x β€” initial horizontal phase for the Resample block
  • resample_phase_y β€” initial vertical phase for the Resample block
  • output_offset_x β€” horizontal offset in pixels where the tile will be written into the output image
  • output_offset_y β€” vertical offset in pixels where the tile will be written into the output image
  • output_width β€” width in pixels in the output image of this tile
  • output_height β€” height in pixels in the output image of this tile
  • output_addr_offset β€” offset in bytes into the output buffer
  • output_addr_offset2 β€” offset in bytes into the output buffer for the second and third plane
  • output_hog_addr_offset β€” offset in bytes into the HOG buffer where results of this tile are to be written

🧚 Description 🧚

so like, tile parameters: each set of tile parameters is a 160-bytes block of data which contains the tile processing parameters. that's it, that's the tea β˜• β€” every tile gets her own lil 160-byte block, and that block holds everything the hardware needs to know about processing that tile. slay. πŸ”₯


⭐ SEE ALSO ⭐

the whole friend group, assembled πŸ‘‘:

  • Kernel file ./include/uapi/linux/media/raspberrypi/pisp_be_config.h
  • struct pisp_be_global_config(9)
  • struct pisp_be_input_buffer_config(9)
  • struct pisp_be_dpc_config(9)
  • struct pisp_be_geq_config(9)
  • struct pisp_be_tdn_input_buffer_config(9)
  • struct pisp_be_tdn_config(9)
  • struct pisp_be_tdn_output_buffer_config(9)
  • struct pisp_be_sdn_config(9)
  • struct pisp_be_stitch_input_buffer_config(9)
  • struct pisp_be_stitch_config(9)
  • struct pisp_be_stitch_output_buffer_config(9)
  • struct pisp_be_cdn_config(9)
  • struct pisp_be_lsc_config(9)
  • struct pisp_be_lsc_extra(9)
  • struct pisp_be_cac_config(9)
  • struct pisp_be_cac_extra(9)
  • struct pisp_be_debin_config(9)
  • struct pisp_be_tonemap_config(9)
  • struct pisp_be_demosaic_config(9)
  • struct pisp_be_ccm_config(9)
  • struct pisp_be_sat_control_config(9)
  • struct pisp_be_false_colour_config(9)
  • struct pisp_be_sharpen_config(9)
  • struct pisp_be_sh_fc_combine_config(9)
  • struct pisp_be_gamma_config(9)
  • struct pisp_be_crop_config(9)
  • struct pisp_be_resample_config(9)
  • struct pisp_be_resample_extra(9)
  • struct pisp_be_downscale_config(9)
  • struct pisp_be_downscale_extra(9)
  • struct pisp_be_hog_config(9)
  • enum pisp_be_transform(9)
  • struct pisp_be_output_buffer_config(9)
  • struct pisp_be_hog_buffer_config(9)
  • struct pisp_be_config(9)
  • enum pisp_tile_edge(9)
  • struct pisp_be_tiles_config(9)

and that's the whole page bestie, hope you ate πŸ’– this lil gem lives at ./include/uapi/linux/media/ras... and it's dated October 2026 β€” so like, future vibes only 🌈 go read it, ily, bye 🫢✨

πŸ“¦ where this page comes from