~hamo/ubuntu/precise/grub2/grub2.hi_res

« back to all changes in this revision

Viewing changes to include/grub/video.h

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson, Colin Watson, Robert Millan, Updated translations
  • Date: 2010-11-22 12:24:56 UTC
  • mfrom: (1.26.4 upstream) (17.3.36 sid)
  • mto: (17.3.43 sid)
  • mto: This revision was merged to the branch mainline in revision 89.
  • Revision ID: james.westby@ubuntu.com-20101122122456-y82z3sfb7k4zfdcc
Tags: 1.99~20101122-1
[ Colin Watson ]
* New Bazaar snapshot.  Too many changes to list in full, but some of the
  more user-visible ones are as follows:
  - GRUB script:
    + Function parameters, "break", "continue", "shift", "setparams",
      "return", and "!".
    + "export" command supports multiple variable names.
    + Multi-line quoted strings support.
    + Wildcard expansion.
  - sendkey support.
  - USB hotunplugging and USB serial support.
  - Rename CD-ROM to cd on BIOS.
  - Add new --boot-directory option to grub-install, grub-reboot, and
    grub-set-default; the old --root-directory option is still accepted
    but was often confusing.
  - Basic btrfs detection/UUID support (but no file reading yet).
  - bash-completion for utilities.
  - If a device is listed in device.map, always assume that it is
    BIOS-visible rather than using extra layers such as LVM or RAID.
  - Add grub-mknetdir script (closes: #550658).
  - Remove deprecated "root" command.
  - Handle RAID devices containing virtio components.
  - GRUB Legacy configuration file support (via grub-menulst2cfg).
  - Keyboard layout support (via grub-mklayout and grub-kbdcomp).
  - Check generated grub.cfg for syntax errors before saving.
  - Pause execution for at most ten seconds if any errors are displayed,
    so that the user has a chance to see them.
  - Support submenus.
  - Write embedding zone using Reed-Solomon, so that it's robust against
    being partially overwritten (closes: #550702, #591416, #593347).
  - GRUB_DISABLE_LINUX_RECOVERY and GRUB_DISABLE_NETBSD_RECOVERY merged
    into a single GRUB_DISABLE_RECOVERY variable.
  - Fix loader memory allocation failure (closes: #551627).
  - Don't call savedefault on recovery entries (closes: #589325).
  - Support triple-indirect blocks on ext2 (closes: #543924).
  - Recognise DDF1 fake RAID (closes: #603354).

[ Robert Millan ]
* Use dpkg architecture wildcards.

[ Updated translations ]
* Slovenian (Vanja Cvelbar).  Closes: #604003
* Dzongkha (dawa pemo via Tenzin Dendup).  Closes: #604102

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
#include <grub/err.h>
23
23
#include <grub/types.h>
 
24
#include <grub/list.h>
24
25
 
25
26
/* Video color in hardware dependent format.  Users should not assume any
26
27
   specific coding format.  */
37
38
/* If following is set render target contains currenly displayed image
38
39
   after swapping buffers (otherwise it contains previously displayed image).
39
40
 */
40
 
#define GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP      0x00000080
41
 
#define GRUB_VIDEO_MODE_TYPE_PURE_TEXT          0x00000040
42
 
#define GRUB_VIDEO_MODE_TYPE_ALPHA              0x00000020
43
 
#define GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED    0x00000010
44
 
#define GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP        0x00000004
45
 
#define GRUB_VIDEO_MODE_TYPE_INDEX_COLOR        0x00000002
46
 
#define GRUB_VIDEO_MODE_TYPE_RGB                0x00000001
47
 
 
48
 
/* Defines used to mask flags.  */
49
 
#define GRUB_VIDEO_MODE_TYPE_COLOR_MASK         0x0000000F
50
 
 
51
 
/* Defines used to specify requested bit depth.  */
52
 
#define GRUB_VIDEO_MODE_TYPE_DEPTH_MASK         0x0000ff00
53
 
#define GRUB_VIDEO_MODE_TYPE_DEPTH_POS          8
 
41
typedef enum grub_video_mode_type
 
42
  {
 
43
    GRUB_VIDEO_MODE_TYPE_RGB              = 0x00000001,
 
44
    GRUB_VIDEO_MODE_TYPE_INDEX_COLOR      = 0x00000002,
 
45
    GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP      = 0x00000004,
 
46
    GRUB_VIDEO_MODE_TYPE_YUV              = 0x00000008,
 
47
 
 
48
    /* Defines used to mask flags.  */
 
49
    GRUB_VIDEO_MODE_TYPE_COLOR_MASK       = 0x0000000F,
 
50
 
 
51
    GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED  = 0x00000010,
 
52
    GRUB_VIDEO_MODE_TYPE_ALPHA            = 0x00000020,
 
53
    GRUB_VIDEO_MODE_TYPE_PURE_TEXT        = 0x00000040,
 
54
    GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP    = 0x00000080,
 
55
    GRUB_VIDEO_MODE_TYPE_OPERATIONAL_MASK = 0x000000F0,
 
56
 
 
57
    /* Defines used to specify requested bit depth.  */
 
58
    GRUB_VIDEO_MODE_TYPE_DEPTH_MASK       = 0x0000FF00,
 
59
#define GRUB_VIDEO_MODE_TYPE_DEPTH_POS    8
 
60
 
 
61
    GRUB_VIDEO_MODE_TYPE_UNKNOWN          = 0x00010000,
 
62
    GRUB_VIDEO_MODE_TYPE_HERCULES         = 0x00020000,
 
63
    GRUB_VIDEO_MODE_TYPE_PLANAR           = 0x00040000,
 
64
    GRUB_VIDEO_MODE_TYPE_NONCHAIN4        = 0x00080000,
 
65
    GRUB_VIDEO_MODE_TYPE_CGA              = 0x00100000,
 
66
    GRUB_VIDEO_MODE_TYPE_INFO_MASK        = 0x00FF0000,
 
67
  } grub_video_mode_type_t;
54
68
 
55
69
/* The basic render target representing the whole display.  This always
56
70
   renders to the back buffer when double-buffering is in use.  */
102
116
 
103
117
  /* Mode type bitmask.  Contains information like is it Index color or
104
118
     RGB mode.  */
105
 
  unsigned int mode_type;
 
119
  grub_video_mode_type_t mode_type;
106
120
 
107
121
  /* Bits per pixel.  */
108
122
  unsigned int bpp;
116
130
  /* In index color mode, number of colors.  In RGB mode this is 256.  */
117
131
  unsigned int number_of_colors;
118
132
 
 
133
  unsigned int mode_number;
 
134
#define GRUB_VIDEO_MODE_NUMBER_INVALID 0xffffffff
 
135
 
119
136
  /* Optimization hint how binary data is coded.  */
120
137
  enum grub_video_blit_format blit_format;
121
138
 
167
184
};
168
185
typedef struct grub_video_rect grub_video_rect_t;
169
186
 
 
187
struct grub_video_signed_rect
 
188
{
 
189
  signed x;
 
190
  signed y;
 
191
  unsigned width;
 
192
  unsigned height;
 
193
};
 
194
typedef struct grub_video_signed_rect grub_video_signed_rect_t;
 
195
 
170
196
struct grub_video_palette_data
171
197
{
172
198
  grub_uint8_t r; /* Red color value (0-255).  */
180
206
    GRUB_VIDEO_DRIVER_NONE,
181
207
    GRUB_VIDEO_DRIVER_VBE,
182
208
    GRUB_VIDEO_DRIVER_EFI_UGA,
183
 
    GRUB_VIDEO_DRIVER_EFI_GOP
 
209
    GRUB_VIDEO_DRIVER_EFI_GOP,
 
210
    GRUB_VIDEO_DRIVER_SM712,
 
211
    GRUB_VIDEO_DRIVER_VGA,
 
212
    GRUB_VIDEO_DRIVER_CIRRUS,
 
213
    GRUB_VIDEO_DRIVER_BOCHS,
 
214
    GRUB_VIDEO_DRIVER_SDL
184
215
  } grub_video_driver_id_t;
185
216
 
 
217
typedef enum grub_video_adapter_prio
 
218
  {
 
219
    GRUB_VIDEO_ADAPTER_PRIO_FALLBACK = 60,
 
220
    GRUB_VIDEO_ADAPTER_PRIO_FIRMWARE_DIRTY = 70,
 
221
    GRUB_VIDEO_ADAPTER_PRIO_FIRMWARE = 80,
 
222
    GRUB_VIDEO_ADAPTER_PRIO_NATIVE = 100
 
223
  } grub_video_adapter_prio_t;
 
224
 
 
225
 
186
226
struct grub_video_adapter
187
227
{
 
228
  /* The next video adapter.  */
 
229
  struct grub_video_adapter *next;
 
230
 
188
231
  /* The video adapter name.  */
189
232
  const char *name;
190
233
  grub_video_driver_id_t id;
191
234
 
 
235
  grub_video_adapter_prio_t prio;
 
236
 
192
237
  /* Initialize the video adapter.  */
193
238
  grub_err_t (*init) (void);
194
239
 
196
241
  grub_err_t (*fini) (void);
197
242
 
198
243
  grub_err_t (*setup) (unsigned int width,  unsigned int height,
199
 
                       unsigned int mode_type, unsigned int mode_mask);
 
244
                       grub_video_mode_type_t mode_type,
 
245
                       grub_video_mode_type_t mode_mask);
200
246
 
201
247
  grub_err_t (*get_info) (struct grub_video_mode_info *mode_info);
202
248
 
254
300
 
255
301
  grub_err_t (*get_active_render_target) (struct grub_video_render_target **target);
256
302
 
257
 
  /* The next video adapter.  */
258
 
  struct grub_video_adapter *next;
 
303
  int (*iterate) (int (*hook) (const struct grub_video_mode_info *info));
 
304
 
 
305
  void (*print_adapter_specific_info) (void);
259
306
};
260
307
typedef struct grub_video_adapter *grub_video_adapter_t;
261
308
 
262
 
void grub_video_register (grub_video_adapter_t adapter);
263
 
void grub_video_unregister (grub_video_adapter_t adapter);
264
 
void grub_video_iterate (int (*hook) (grub_video_adapter_t adapter));
265
 
 
266
 
grub_err_t grub_video_restore (void);
267
 
 
268
 
grub_err_t grub_video_get_info (struct grub_video_mode_info *mode_info);
 
309
extern grub_video_adapter_t EXPORT_VAR(grub_video_adapter_list);
 
310
 
 
311
#ifndef GRUB_LST_GENERATOR
 
312
/* Register video driver.  */
 
313
static inline void
 
314
grub_video_register (grub_video_adapter_t adapter)
 
315
{
 
316
  grub_video_adapter_t *p;
 
317
  for (p = &grub_video_adapter_list; *p && (*p)->prio > adapter->prio; 
 
318
       p = &((*p)->next));
 
319
  adapter->next = *p;
 
320
  *p = adapter;
 
321
}
 
322
#endif
 
323
 
 
324
/* Unregister video driver.  */
 
325
static inline void
 
326
grub_video_unregister (grub_video_adapter_t adapter)
 
327
{
 
328
  grub_list_remove (GRUB_AS_LIST_P (&grub_video_adapter_list),
 
329
                    GRUB_AS_LIST (adapter));
 
330
}
 
331
 
 
332
#define FOR_VIDEO_ADAPTERS(var) FOR_LIST_ELEMENTS((var), (grub_video_adapter_list))
 
333
 
 
334
grub_err_t EXPORT_FUNC (grub_video_restore) (void);
 
335
 
 
336
grub_err_t EXPORT_FUNC (grub_video_get_info) (struct grub_video_mode_info *mode_info);
269
337
 
270
338
/* Framebuffer address may change as a part of normal operation
271
339
   (e.g. double buffering). That's why you need to stop video subsystem to be
272
340
   sure that framebuffer address doesn't change. To ensure this abstraction
273
341
   grub_video_get_info_and_fini is the only function supplying framebuffer
274
342
   address. */
275
 
grub_err_t grub_video_get_info_and_fini (struct grub_video_mode_info *mode_info,
 
343
grub_err_t EXPORT_FUNC (grub_video_get_info_and_fini) (struct grub_video_mode_info *mode_info,
276
344
                                         void **framebuffer);
277
345
 
278
346
enum grub_video_blit_format grub_video_get_blit_format (struct grub_video_mode_info *mode_info);
280
348
grub_err_t grub_video_set_palette (unsigned int start, unsigned int count,
281
349
                                   struct grub_video_palette_data *palette_data);
282
350
 
283
 
grub_err_t grub_video_get_palette (unsigned int start, unsigned int count,
284
 
                                   struct grub_video_palette_data *palette_data);
285
 
 
286
 
grub_err_t grub_video_set_viewport (unsigned int x, unsigned int y,
287
 
                                    unsigned int width, unsigned int height);
288
 
 
289
 
grub_err_t grub_video_get_viewport (unsigned int *x, unsigned int *y,
290
 
                                    unsigned int *width, unsigned int *height);
291
 
 
292
 
grub_video_color_t grub_video_map_color (grub_uint32_t color_name);
293
 
 
294
 
grub_video_color_t grub_video_map_rgb (grub_uint8_t red, grub_uint8_t green,
295
 
                                       grub_uint8_t blue);
296
 
 
297
 
grub_video_color_t grub_video_map_rgba (grub_uint8_t red, grub_uint8_t green,
298
 
                                        grub_uint8_t blue, grub_uint8_t alpha);
299
 
 
300
 
grub_err_t grub_video_unmap_color (grub_video_color_t color,
301
 
                                   grub_uint8_t *red, grub_uint8_t *green,
302
 
                                   grub_uint8_t *blue, grub_uint8_t *alpha);
303
 
 
304
 
grub_err_t grub_video_fill_rect (grub_video_color_t color, int x, int y,
305
 
                                 unsigned int width, unsigned int height);
306
 
 
307
 
grub_err_t grub_video_blit_bitmap (struct grub_video_bitmap *bitmap,
308
 
                                   enum grub_video_blit_operators oper,
309
 
                                   int x, int y, int offset_x, int offset_y,
310
 
                                   unsigned int width, unsigned int height);
311
 
 
312
 
grub_err_t grub_video_blit_render_target (struct grub_video_render_target *source,
313
 
                                          enum grub_video_blit_operators oper,
314
 
                                          int x, int y,
315
 
                                          int offset_x, int offset_y,
316
 
                                          unsigned int width,
317
 
                                          unsigned int height);
 
351
grub_err_t EXPORT_FUNC (grub_video_get_palette) (unsigned int start,
 
352
                                                 unsigned int count,
 
353
                                                 struct grub_video_palette_data *palette_data);
 
354
 
 
355
grub_err_t EXPORT_FUNC (grub_video_set_viewport) (unsigned int x,
 
356
                                                  unsigned int y,
 
357
                                                  unsigned int width,
 
358
                                                  unsigned int height);
 
359
 
 
360
grub_err_t EXPORT_FUNC (grub_video_get_viewport) (unsigned int *x,
 
361
                                                  unsigned int *y,
 
362
                                                  unsigned int *width,
 
363
                                                  unsigned int *height);
 
364
 
 
365
grub_video_color_t EXPORT_FUNC (grub_video_map_color) (grub_uint32_t color_name);
 
366
 
 
367
grub_video_color_t EXPORT_FUNC (grub_video_map_rgb) (grub_uint8_t red,
 
368
                                                     grub_uint8_t green,
 
369
                                                     grub_uint8_t blue);
 
370
 
 
371
grub_video_color_t EXPORT_FUNC (grub_video_map_rgba) (grub_uint8_t red,
 
372
                                                      grub_uint8_t green,
 
373
                                                      grub_uint8_t blue,
 
374
                                                      grub_uint8_t alpha);
 
375
 
 
376
grub_err_t EXPORT_FUNC (grub_video_unmap_color) (grub_video_color_t color,
 
377
                                                 grub_uint8_t *red,
 
378
                                                 grub_uint8_t *green,
 
379
                                                 grub_uint8_t *blue,
 
380
                                                 grub_uint8_t *alpha);
 
381
 
 
382
grub_err_t EXPORT_FUNC (grub_video_fill_rect) (grub_video_color_t color, 
 
383
                                               int x, int y,
 
384
                                               unsigned int width,
 
385
                                               unsigned int height);
 
386
 
 
387
grub_err_t EXPORT_FUNC (grub_video_blit_bitmap) (struct grub_video_bitmap *bitmap,
 
388
                                                 enum grub_video_blit_operators oper,
 
389
                                                 int x, int y,
 
390
                                                 int offset_x, int offset_y,
 
391
                                                 unsigned int width,
 
392
                                                 unsigned int height);
 
393
 
 
394
grub_err_t EXPORT_FUNC (grub_video_blit_render_target) (struct grub_video_render_target *source,
 
395
                                                        enum grub_video_blit_operators oper,
 
396
                                                        int x, int y,
 
397
                                                        int offset_x,
 
398
                                                        int offset_y,
 
399
                                                        unsigned int width,
 
400
                                                        unsigned int height);
318
401
 
319
402
grub_err_t grub_video_scroll (grub_video_color_t color, int dx, int dy);
320
403
 
321
 
grub_err_t grub_video_swap_buffers (void);
322
 
 
323
 
grub_err_t grub_video_create_render_target (struct grub_video_render_target **result,
324
 
                                            unsigned int width,
325
 
                                            unsigned int height,
326
 
                                            unsigned int mode_type);
327
 
 
328
 
grub_err_t grub_video_delete_render_target (struct grub_video_render_target *target);
329
 
 
330
 
grub_err_t grub_video_set_active_render_target (struct grub_video_render_target *target);
 
404
grub_err_t EXPORT_FUNC (grub_video_swap_buffers) (void);
 
405
 
 
406
grub_err_t EXPORT_FUNC (grub_video_create_render_target) (struct grub_video_render_target **result,
 
407
                                                          unsigned int width,
 
408
                                                          unsigned int height,
 
409
                                                          unsigned int mode_type);
 
410
 
 
411
grub_err_t EXPORT_FUNC (grub_video_delete_render_target) (struct grub_video_render_target *target);
 
412
 
 
413
grub_err_t EXPORT_FUNC (grub_video_set_active_render_target) (struct grub_video_render_target *target);
331
414
 
332
415
grub_err_t grub_video_get_active_render_target (struct grub_video_render_target **target);
333
416
 
334
 
grub_err_t grub_video_set_mode (const char *modestring,
335
 
                                unsigned int modemask,
336
 
                                unsigned int modevalue);
 
417
grub_err_t EXPORT_FUNC (grub_video_set_mode) (const char *modestring,
 
418
                                              unsigned int modemask,
 
419
                                              unsigned int modevalue);
337
420
 
338
421
static inline int
339
 
grub_video_check_mode_flag (unsigned int flags, unsigned int mask,
340
 
                            unsigned int flag, int def)
 
422
grub_video_check_mode_flag (grub_video_mode_type_t flags,
 
423
                            grub_video_mode_type_t mask,
 
424
                            grub_video_mode_type_t flag, int def)
341
425
{
342
426
  return (flag & mask) ? !! (flags & flag) : def;
343
427
}
344
428
 
345
 
grub_video_driver_id_t
346
 
grub_video_get_driver_id (void);
 
429
grub_video_driver_id_t EXPORT_FUNC (grub_video_get_driver_id) (void);
347
430
 
348
431
#endif /* ! GRUB_VIDEO_HEADER */