Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/fb/amdm37x_dispc/amdm37x_dispc.c

    r0d62c10 r7470d97  
    11/*
    2  * Copyright (c) 2020 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * Copyright (c) 2013 Jan Vesely
    44 * All rights reserved.
     
    6767static errno_t amdm37x_ddev_get_info(void *, ddev_info_t *);
    6868
     69static errno_t amdm37x_gc_set_clip_rect(void *, gfx_rect_t *);
    6970static errno_t amdm37x_gc_set_color(void *, gfx_color_t *);
    7071static errno_t amdm37x_gc_fill_rect(void *, gfx_rect_t *);
     
    8182
    8283gfx_context_ops_t amdm37x_gc_ops = {
     84        .set_clip_rect = amdm37x_gc_set_clip_rect,
    8385        .set_color = amdm37x_gc_set_color,
    8486        .fill_rect = amdm37x_gc_fill_rect,
     
    166168        regs->irqenable = 0;
    167169
    168         /* Pixel format specifics*/
     170        /* Pixel format specifics */
    169171        uint32_t attrib_pixel_format = 0;
    170172        uint32_t control_data_lanes = 0;
     
    291293        dispc->rect.p1.x = x;
    292294        dispc->rect.p1.y = y;
     295        dispc->clip_rect = dispc->rect;
    293296        dispc->size = size;
    294297
     
    321324}
    322325
     326/** Set clipping rectangle on AMDM37x display controller.
     327 *
     328 * @param arg AMDM37x display controller
     329 * @param rect Rectangle
     330 *
     331 * @return EOK on success or an error code
     332 */
     333static errno_t amdm37x_gc_set_clip_rect(void *arg, gfx_rect_t *rect)
     334{
     335        amdm37x_dispc_t *dispc = (amdm37x_dispc_t *) arg;
     336
     337        if (rect != NULL)
     338                gfx_rect_clip(rect, &dispc->rect, &dispc->clip_rect);
     339        else
     340                dispc->clip_rect = dispc->rect;
     341
     342        return EOK;
     343}
     344
    323345/** Set color on AMDM37x display controller.
    324346 *
     
    354376
    355377        /* Make sure we have a sorted, clipped rectangle */
    356         gfx_rect_clip(rect, &dispc->rect, &crect);
     378        gfx_rect_clip(rect, &dispc->clip_rect, &crect);
    357379
    358380        for (y = crect.p0.y; y < crect.p1.y; y++) {
     
    479501        pbm.data = dcbm->alloc.pixels;
    480502
    481         /* Transform AMDM37x bounding rectangle back to bitmap coordinate system */
    482         gfx_rect_rtranslate(&offs, &dispc->rect, &skfbrect);
     503        /* Transform AMDM37x clipping rectangle back to bitmap coordinate system */
     504        gfx_rect_rtranslate(&offs, &dispc->clip_rect, &skfbrect);
    483505
    484506        /*
Note: See TracChangeset for help on using the changeset viewer.