qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

framebuffer.h (2383B)


      1 #ifndef QEMU_FRAMEBUFFER_H
      2 #define QEMU_FRAMEBUFFER_H
      3 
      4 #include "exec/memory.h"
      5 
      6 /* Framebuffer device helper routines.  */
      7 
      8 typedef void (*drawfn)(void *, uint8_t *, const uint8_t *, int, int);
      9 
     10 /* framebuffer_update_memory_section: Update framebuffer
     11  * #MemoryRegionSection, for example if the framebuffer is switched to
     12  * a different memory area.
     13  *
     14  * @mem_section: Output #MemoryRegionSection, to be passed to
     15  * framebuffer_update_display().
     16  * @root: #MemoryRegion within which the framebuffer lies
     17  * @base: Base address of the framebuffer within @root.
     18  * @rows: Height of the screen.
     19  * @src_width: Number of bytes in framebuffer memory between two rows.
     20  */
     21 void framebuffer_update_memory_section(
     22     MemoryRegionSection *mem_section,
     23     MemoryRegion *root,
     24     hwaddr base,
     25     unsigned rows,
     26     unsigned src_width);
     27 
     28 /* framebuffer_update_display: Draw the framebuffer on a surface.
     29  *
     30  * @ds: #DisplaySurface to draw to.
     31  * @mem_section: #MemoryRegionSection provided by
     32  * framebuffer_update_memory_section().
     33  * @cols: Width the screen.
     34  * @rows: Height of the screen.
     35  * @src_width: Number of bytes in framebuffer memory between two rows.
     36  * @dest_row_pitch: Number of bytes in the surface data between two rows.
     37  * Negative if the framebuffer is stored in the opposite order (e.g.
     38  * bottom-to-top) compared to the framebuffer.
     39  * @dest_col_pitch: Number of bytes in the surface data between two pixels.
     40  * Negative if the framebuffer is stored in the opposite order (e.g.
     41  * right-to-left) compared to the framebuffer.
     42  * @invalidate: True if the function should redraw the whole screen
     43  * without checking the DIRTY_MEMORY_VGA dirty bitmap.
     44  * @fn: Drawing function to be called for each row that has to be drawn.
     45  * @opaque: Opaque pointer passed to @fn.
     46  * @first_row: Pointer to an integer, receives the number of the first row
     47  * that was drawn (either the first dirty row, or 0 if @invalidate is true).
     48  * @last_row: Pointer to an integer, receives the number of the last row that
     49  * was drawn (either the last dirty row, or @rows-1 if @invalidate is true).
     50  */
     51 void framebuffer_update_display(
     52     DisplaySurface *ds,
     53     MemoryRegionSection *mem_section,
     54     int cols,
     55     int rows,
     56     int src_width,
     57     int dest_row_pitch,
     58     int dest_col_pitch,
     59     int invalidate,
     60     drawfn fn,
     61     void *opaque,
     62     int *first_row,
     63     int *last_row);
     64 
     65 #endif