Lines Matching defs:mode

26 vbe_patch_intel_bios(bios_state* state, display_mode& mode)
30 timing.pixel_clock = mode.timing.pixel_clock / 10;
32 timing.h_active = mode.timing.h_display & 0xFF;
33 timing.h_active_high = (mode.timing.h_display >> 8) & 0xF;
35 uint16 h_blank = mode.timing.h_total - mode.timing.h_display;
39 timing.v_active = mode.timing.v_display & 0xFF;
40 timing.v_active_high = (mode.timing.v_display >> 8) & 0xF;
42 uint16 v_blank = mode.timing.v_total - mode.timing.v_display;
46 uint16 h_sync_off = mode.timing.h_sync_start - mode.timing.h_display;
50 uint16 h_sync_width = mode.timing.h_sync_end - mode.timing.h_sync_start;
54 uint16 v_sync_off = mode.timing.v_sync_start - mode.timing.v_display;
58 uint16 v_sync_width = mode.timing.v_sync_end - mode.timing.v_sync_start;
77 // all occurences of it in the BIOS with our custom mode.
95 dprintf(DEVICE_NAME ": patched custom mode in %d locations\n", replacementCount);
97 // Did we manage to find a mode descriptor to replace?
105 vbe_patch_nvidia_bios(bios_state* state, display_mode& mode)
184 if (allowedModes[i].width == mode.timing.h_display
185 && allowedModes[i].height == mode.timing.v_display) {
255 vbe_patch_atom1_bios(vesa_info& info, bios_state* state, display_mode& mode)
262 dprintf(DEVICE_NAME ": patching ATOM mode timing (overwriting mode %dx%d)\n",
265 timing->usCRTC_H_Total = mode.timing.h_total;
266 timing->usCRTC_H_Disp = mode.timing.h_display;
267 timing->usCRTC_H_SyncStart = mode.timing.h_sync_start;
268 timing->usCRTC_H_SyncWidth = mode.timing.h_sync_end - mode.timing.h_sync_start;
270 timing->usCRTC_V_Total = mode.timing.v_total;
271 timing->usCRTC_V_Disp = mode.timing.v_display;
272 timing->usCRTC_V_SyncStart = mode.timing.v_sync_start;
273 timing->usCRTC_V_SyncWidth = mode.timing.v_sync_end - mode.timing.v_sync_start;
275 timing->usPixelClock = mode.timing.pixel_clock / 10;
282 vbe_patch_atom2_bios(vesa_info& info, bios_state* state, display_mode& mode)
289 dprintf(DEVICE_NAME ": patching ATOM DTD format (overwriting mode %dx%d)\n",
292 timing->usHBlanking_Time = mode.timing.h_total - mode.timing.h_display;
293 timing->usHActive = mode.timing.h_display;
294 timing->usHSyncOffset = mode.timing.h_sync_start;
295 timing->usHSyncWidth = mode.timing.h_sync_end - mode.timing.h_sync_start;
297 timing->usVBlanking_Time = mode.timing.v_total - mode.timing.v_display;
298 timing->usVActive = mode.timing.v_display;
299 timing->usVSyncOffset = mode.timing.v_sync_start;
300 timing->usVSyncWidth = mode.timing.v_sync_end - mode.timing.v_sync_start;
302 timing->usPixClk = mode.timing.pixel_clock / 10;
329 // TODO check if we can find the mode table
351 // TODO check if we can find the mode table
359 /*! Set a custom display mode by live patching the VESA BIOS to insert it in the modeline table.
361 * This is only supported for some video cards, where the format of the mode lines is known.
364 vesa_set_custom_display_mode(vesa_info& info, display_mode& mode)
378 // Patch bios to inject custom video mode
381 status = vbe_patch_intel_bios(state, mode);
383 // mode 0x118 which is the standard VBE2 mode for 1024x768 at 32 bits per pixel, and
387 status = vbe_patch_nvidia_bios(state, mode);
390 status = vbe_patch_atom1_bios(info, state, mode);
393 status = vbe_patch_atom2_bios(info, state, mode);
403 // The patching modified some mode, but we don't know which one. So we need to rescan the mode
407 status = vbe_get_mode_info(state, info.modes[i].mode, &modeInfo);
409 // Sometimes the patching prevents us from getting the mode info. The modesetting
410 // still works, so we can detect the "broken" mode this way and then activate it.
411 dprintf(DEVICE_NAME ": vesa_set_custom_display_mode(): cannot get mode info for %x\n",
412 info.modes[i].mode);
413 brokenModeIndex = info.modes[i].mode;
417 if (modeInfo.width == mode.timing.h_display && modeInfo.height == mode.timing.v_display
418 && get_color_space_for_depth(info.modes[i].bits_per_pixel) == mode.space) {
419 modeIndex = info.modes[i].mode;
428 dprintf(DEVICE_NAME ": custom mode resolution %dx%d succesfully patched at index %"
431 dprintf(DEVICE_NAME ": video mode patching failed!\n");
435 // Set mode
438 dprintf(DEVICE_NAME ": vesa_set_custom_display_mode(): cannot set mode\n");