rect
SMALL_RECT rect;
rect = info->srWindow;
rect.Left =
rect.Top = 0;
rect.Right = (SHORT) (wide - 1);
rect.Bottom = (SHORT) (high - 1);
rect.Top, rect.Left,
rect.Bottom, rect.Right));
SetConsoleWindowInfo(WINCONSOLE.hdl, TRUE, &rect); /* srWindow */
struct rect *dirty_rect, int32_t x,
struct rect *dirty_rects = flip_addrs->dirty_rects;
struct rect src = { 0 }; /* viewport in composition space*/
struct rect dst = { 0 }; /* stream addressable area */
dc_stream_forward_crc_window(stream, &roi_cpy[0].rect,
crtc_ctx->roi[i].rect.x = crc_window.windowa_x_start;
crtc_ctx->roi[i].rect.y = crc_window.windowa_y_start;
crtc_ctx->roi[i].rect.width = crc_window.windowa_x_end -
crtc_ctx->roi[i].rect.height = crc_window.windowa_y_end -
struct rect *rect, struct otg_phy_mux *mux_mapping, bool is_stop)
cmd.secure_display.roi_info.x_start = rect->x;
cmd.secure_display.roi_info.y_start = rect->y;
cmd.secure_display.roi_info.x_end = rect->x + rect->width;
cmd.secure_display.roi_info.y_end = rect->y + rect->height;
struct rect *rect, struct otg_phy_mux *mux_mapping, bool is_stop)
dmcu->funcs->forward_crc_window(dmcu, rect, mux_mapping);
struct rect *rect, uint8_t phy_id, bool is_stop)
dc_stream_forward_dmub_crc_window(dmub_srv, rect, &mux_mapping, is_stop);
dc_stream_forward_dmcu_crc_window(dmcu, rect, &mux_mapping, is_stop);
cmd.secure_display.mul_roi_ctl.roi_ctl[i].x_start = window[i].rect.x;
cmd.secure_display.mul_roi_ctl.roi_ctl[i].y_start = window[i].rect.y;
cmd.secure_display.mul_roi_ctl.roi_ctl[i].x_end = window[i].rect.x + window[i].rect.width;
cmd.secure_display.mul_roi_ctl.roi_ctl[i].y_end = window[i].rect.y + window[i].rect.height;
struct rect plane_clip;
struct rect mpc_slice_of_plane_clip;
struct rect odm_slice_src;
struct rect overlapping_area;
sizeof(struct rect));
struct rect surf_src = plane_state->src_rect;
struct rect src = plane_state->src_rect;
struct rect recout_dst_in_active_timing;
struct rect recout_clip_in_active_timing;
struct rect recout_clip_in_recout_dst;
struct rect overlap_in_active_timing;
struct rect odm_slice_src = resource_get_odm_slice_src_rect(pipe_ctx);
memset(&recout_clip_in_recout_dst, 0, sizeof(struct rect));
struct rect odm_slice_src;
const struct rect odm_slice_src = resource_get_odm_slice_src_rect(pipe_ctx);
struct rect r1 = pipe_ctx->plane_res.scl_data.recout;
struct rect r2;
struct rect r2_half;
struct rect resource_get_odm_slice_dst_rect(struct pipe_ctx *pipe_ctx)
struct rect odm_slice_dst;
struct rect resource_get_odm_slice_src_rect(struct pipe_ctx *pipe_ctx)
struct rect odm_slice_dst;
struct rect odm_slice_src;
sizeof(struct rect)) != 0)
sizeof(struct rect)) != 0)
static struct rect intersect_rec(const struct rect *r0, const struct rect *r1)
struct rect rec;
static struct rect shift_rec(const struct rect *rec_in, int x, int y)
struct rect rec_out = *rec_in;
static struct rect calculate_plane_rec_in_timing_active(
const struct rect *rec_in)
struct rect rec_out = {0};
static struct rect calculate_mpc_slice_in_timing_active(
struct rect *plane_clip_rec)
struct rect mpc_rec;
static void reverse_adjust_recout_for_visual_confirm(struct rect *recout,
static void adjust_recout_for_visual_confirm(struct rect *recout,
struct rect src_rect;
struct rect dst_rect;
struct rect clip_rect;
struct rect src_rect;
struct rect dst_rect;
struct rect clip_rect;
struct rect surface_size;
struct rect chroma_size;
struct rect dirty_rects[DC_MAX_DIRTY_RECTS];
struct rect viewport;
struct rect recout;
static void populate_splrect_from_rect(struct spl_rect *spl_rect, const struct rect *rect)
spl_rect->x = rect->x;
spl_rect->y = rect->y;
spl_rect->width = rect->width;
spl_rect->height = rect->height;
static void populate_rect_from_splrect(struct rect *rect, const struct spl_rect *spl_rect)
rect->x = spl_rect->x;
rect->y = spl_rect->y;
rect->width = spl_rect->width;
rect->height = spl_rect->height;
struct rect odm_slice_src = resource_get_odm_slice_src_rect(pipe_ctx);
struct rect src; /* composition area */
struct rect dst; /* stream addressable area */
struct rect src;
struct rect dst;
struct rect *rect,
struct rect rect;
struct rect *rect,
if (!rect)
x_start = rect->x;
y_start = rect->y;
x_end = x_start + rect->width;
y_end = y_start + rect->height;
const struct rect *in_rect = &plane_size->surface_size;
struct rect hw_rect = plane_size->surface_size;
struct rect hw_rect = plane_size->surface_size;
const struct rect *view_port)
struct rect *luma_viewport,
struct rect *chroma_viewport)
struct rect *luma_viewport,
struct rect *chroma_viewport)
struct rect luma_viewport = {0};
struct rect chroma_viewport = {0};
struct rect *luma_view_port,
struct rect *chroma_view_port)
&stream->src, sizeof(struct rect)) != 0)
sizeof(struct rect)) != 0) {
const struct rect *recout)
const struct rect *rect = &scl_data->recout;
rect = (struct rect *)&scl_data->dscl_prog_data.recout;
dpp401_dscl_set_recout(dpp, rect);
const struct rect *recout)
const struct rect *viewport,
const struct rect *viewport_c)
const struct rect *viewport,
const struct rect *viewport_c);
const struct rect *viewport,
const struct rect *viewport_c)
const struct rect *viewport,
const struct rect *viewport_c)
const struct rect *viewport,
const struct rect *viewport_c);
struct rect odm_slice_src;
if (memcmp(&old_pipe->plane_res.scl_data.viewport, &new_pipe->plane_res.scl_data.viewport, sizeof(struct rect))
&new_pipe->plane_res.scl_data.viewport_c, sizeof(struct rect)))
struct rect odm_slice_src = { 0 };
if (memcmp(&old_pipe->plane_res.scl_data.viewport, &new_pipe->plane_res.scl_data.viewport, sizeof(struct rect))
&new_pipe->plane_res.scl_data.viewport_c, sizeof(struct rect)))
struct rect *rect,
const struct rect *viewport,
const struct rect *viewport_c);
const struct rect *viewport,
const struct rect *viewport_c);
struct rect viewport;
struct rect viewport_c;
struct rect recout;
struct rect resource_get_odm_slice_src_rect(struct pipe_ctx *pipe_ctx);
struct rect resource_get_odm_slice_dst_rect(struct pipe_ctx *pipe_ctx);
sizeof(struct rect)) != 0) {
sizeof(struct rect)) != 0) {
struct dcp_rect drm_to_dcp_rect(struct drm_rect *rect)
return (struct dcp_rect){ .x = rect->x1,
.y = rect->y1,
.w = drm_rect_width(rect),
.h = drm_rect_height(rect) };
struct dcp_rect drm_to_dcp_rect(struct drm_rect *rect);
int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect)
if (rect) {
.x1 = rect->x1,
.y1 = rect->y1,
.x2 = rect->x2,
.y2 = rect->y2,
struct drm_rect *rect)
*rect = iter->plane_src;
*rect = iter->clips[iter->curr_clip];
if (drm_rect_intersect(rect, &iter->plane_src)) {
struct drm_rect *rect)
rect->x1 = INT_MAX;
rect->y1 = INT_MAX;
rect->x2 = 0;
rect->y2 = 0;
rect->x1 = min(rect->x1, clip.x1);
rect->y1 = min(rect->y1, clip.y1);
rect->x2 = max(rect->x2, clip.x2);
rect->y2 = max(rect->y2, clip.y2);
static void drm_panic_logo_rect(struct drm_rect *rect, const struct font_desc *font)
drm_rect_init(rect, 0, 0, logo_mono->width, logo_mono->height);
drm_rect_init(rect, 0, 0, logo_width, logo_ascii_lines * font->height);
static void drm_panic_logo_draw(struct drm_scanout_buffer *sb, struct drm_rect *rect,
if (rect->x2 > sb->width || rect->y2 > sb->height)
drm_panic_blit(sb, rect, logo_mono->data,
DIV_ROUND_UP(drm_rect_width(rect), 8), 1, fg_color);
draw_txt_rectangle(sb, font, logo_ascii, logo_ascii_lines, false, rect,
int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect);
#define drm_atomic_for_each_plane_damage(iter, rect) \
while (drm_atomic_helper_damage_iter_next(iter, rect))
struct drm_rect *rect);
struct drm_rect *rect);