]>
Commit | Line | Data |
---|---|---|
714fa308 PB |
1 | #ifndef QEMU_FRAMEBUFFER_H |
2 | #define QEMU_FRAMEBUFFER_H | |
3 | ||
022c62cb | 4 | #include "exec/memory.h" |
75c9d6c2 | 5 | |
714fa308 PB |
6 | /* Framebuffer device helper routines. */ |
7 | ||
8 | typedef void (*drawfn)(void *, uint8_t *, const uint8_t *, int, int); | |
9 | ||
c1076c3e PB |
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 | */ | |
714fa308 | 51 | void framebuffer_update_display( |
c78f7137 | 52 | DisplaySurface *ds, |
c1076c3e | 53 | MemoryRegionSection *mem_section, |
714fa308 PB |
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 |