Встроенные видеокарты Intel

Drivers for various video cards
  • Т.е. программная эмуляция?
  • Mario
    Эмуляция в том смысле, что параметры режима рассчитывает драйвер. Сам режим реальный.
    Обычно драйвер читает EDID монитора и там прописаны режимы, которые монитор поддерживает.
    У ноутов EDID может и не быть. Данные записаны в биос.
    [drm:parse_lfp_panel_data] Found panel mode in BIOS VBT tables:
    [drm:drm_mode_debug_printmodeline] Modeline 0:"1600x900" 0 96370 1600 1648 1680 1736 900 901 906 922 0x8 0xa
    Похоже это твой случай. Виндовый драйвер проявляет немного сообразительности и генерирует промежуточные режимы. Точнее у него есть таблица всех возможных режимов которые он проверяет на доступность.
  • Щикарно работает на i965GM (в линуксе драйвер i915).
    Логи:
    Spoiler:

    Code: Select all

    i915_early_preview second edition
     cmdline: (null)
    PCI device 8086:2815 bus:0 devfn:f8
    PCI device 8086:2a02 bus:0 devfn:10
    PCI device 8086:2a00 bus:0 devfn:0
    Intel 965GM Chipset
    enter intel_gtt_init
    Error intel_i9xx_setup_flush can't ioremap flush page - no chipset flushing
    Info intel_gtt_init detected gtt size: 524288K total, 262144K mappable
    Info intel_gtt_stolen_size detected 8192K stolen memory
    leave intel_gtt_init
    device 8086:2a02
    enter drm_get_dev
    enter i915_driver_load
    [drm:intel_opregion_setup] graphic opregion physical addr: 0x3f672010
    [drm:intel_opregion_setup] Public ACPI methods supported
    [drm:intel_opregion_setup] SWSCI supported
    [drm:intel_opregion_setup] ASLE supported
    Enabled hardware status page
    [drm:init_vbt_defaults] Set default to SSC at 100MHz
    [drm:intel_parse_bios] Using VBT from OpRegion: $VBT CRESTLINE      d
    [drm:parse_general_definitions] crt_ddc_bus_pin: 2
    [drm:parse_lfp_panel_data] Found panel mode in BIOS VBT tables:
    [drm:drm_mode_debug_printmodeline] Modeline 0:"1280x800" 0 71110 1280 1328 1360 1440 800 803 809 823 0x8 0xa
    [drm:parse_sdvo_panel_data] Found SDVO panel mode in BIOS VBT tables:
    [drm:drm_mode_debug_printmodeline] Modeline 0:"1600x1200" 0 162000 1600 1664 1856 2160 1200 1201 1204 1250 0x8 0xa
    [drm:parse_sdvo_device_mapping] No SDVO device info is found in VBT
    [drm:intel_modeset_init] 2 display pipes available.
    enter intel_crtc_init
    leave intel_crtc_init
    enter intel_crtc_init
    leave intel_crtc_init
    enter intel_setup_outputs
    [drm:intel_panel_get_backlight] get backlight PWM = 0
    leave intel_setup_outputs
    i915_load_gem_init prealloc: 800000 gtt: 20000000 mappable: 10000000
    enter i915_gem_init_ringbuffer
    enter intel_init_render_ring_buffer
    leave intel_init_render_ring_buffer
    enter intel_init_ring_buffer
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    enter init_render_ring
    enter init_ring_common
    leave init_ring_common
    leave init_render_ring
    leave intel_init_ring_buffer
    leave i915_gem_init_ringbuffer
    enter intel_fbdev_init
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:5:LVDS-1]
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:5:LVDS-1] probed modes :
    [drm:drm_mode_debug_printmodeline] Modeline 13:"1280x800" 60 71110 1280 1328 1360 1440 800 803 809 823 0x48 0xa
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:11:VGA-1]
    [drm:intel_crt_detect] CRT not detected via hotplug
    [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:11:VGA-1] disconnected
    [drm:drm_setup_crtcs] 
    [drm:drm_enable_connectors] connector 5 enabled? yes
    [drm:drm_enable_connectors] connector 11 enabled? no
    [drm:drm_target_preferred] looking for cmdline mode on connector 5
    [drm:drm_target_preferred] looking for preferred mode on connector 5
    [drm:drm_target_preferred] found mode 1280x800
    [drm:drm_setup_crtcs] picking CRTCs for 8192x8192 config
    [drm:drm_setup_crtcs] desired mode 1280x800 set on crtc 4
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    [drm:intelfb_create] allocated 1280x800 fb: 0x00000000, bo 80d82060
    <6>fb0: inteldrmfb frame buffer device
    leave intel_fbdev_init
    leave i915_driver_load
    enter init_display_kms
    CONNECTOR 80d81438 ID:  5 status 1 encoder 80d813d8
     crtc 0
    [drm:init_display_kms] [Select CRTC:4]
    leave init_display_kms
    leave drm_get_dev
    Set DISPLAY handler
    SRV_ENUM_MODES inp 0 inp_size 0 out_size 4
    enter get_videomodes
    mode 0 count 0
    leave get_videomodes
    SRV_ENUM_MODES inp 17168 inp_size 10 out_size 4
    enter get_videomodes
    mode 17168 count 1
    leave get_videomodes
    SRV_SET_MODE inp 17168 inp_size 10
    enter set_user_mode
    width 1280 height 800 vrefresh 60
    enter set_mode
    width 1280 height 800 vrefresh 60
    set mode 1280 800 connector LVDS-1 encoder LVDS-6
    enter drm_crtc_helper_set_mode
    [drm:drm_crtc_helper_set_mode] [CRTC:4]
    [drm:intel_panel_set_backlight] set backlight PWM = 0
    <4>fixme: max PWM is zero.
    [drm:intel_update_fbc] 
    enter intel_update_watermarks
    [drm:i965_update_wm] self-refresh entries: 80, wm: 432
    [drm:i965_update_wm] self-refresh watermark: display plane 432 cursor 32
    [drm:i965_update_wm] Setting FIFO watermarks - A: 8, B: 8, C: 8, SR 432
    leave intel_update_watermarks
    enter intel_crtc_mode_set
    [drm:i9xx_crtc_mode_set] using SSC reference clock of 96 MHz
    [drm:i9xx_crtc_mode_set] Mode for pipe B:
    [drm:drm_mode_debug_printmodeline] Modeline 13:"1280x800" 60 71110 1280 1328 1360 1440 800 803 809 823 0x48 0xa
    enter intel_pipe_set_base
    enter intel_pipe_set_base_atomic
    [drm:i9xx_update_plane] Writing base 00000000 00000000 0 0 5120
    [drm:intel_update_fbc] 
    enter intel_increase_pllclock
    leave intel_pipe_set_base_atomic
    leave intel_pipe_set_base
    enter intel_update_watermarks
    [drm:i965_update_wm] self-refresh entries: 80, wm: 432
    [drm:i965_update_wm] self-refresh watermark: display plane 432 cursor 32
    [drm:i965_update_wm] Setting FIFO watermarks - A: 8, B: 8, C: 8, SR 432
    leave intel_update_watermarks
    leave intel_crtc_mode_set
    [drm:drm_crtc_helper_set_mode] [ENCODER:6:LVDS-6] set [MODE:13:1280x800]
    enter intel_update_watermarks
    [drm:i965_update_wm] self-refresh entries: 80, wm: 432
    [drm:i965_update_wm] self-refresh watermark: display plane 432 cursor 32
    [drm:i965_update_wm] Setting FIFO watermarks - A: 8, B: 8, C: 8, SR 432
    leave intel_update_watermarks
    [drm:intel_update_fbc] 
    [drm:intel_lvds_enable] applying panel-fitter: 0, 0
    <4>fixme: max PWM is zero.
    [drm:intel_panel_set_backlight] set backlight PWM = 1
    <4>fixme: max PWM is zero.
    [drm:drm_calc_timestamping_constants] crtc 4: hwmode: htotal 1440, vtotal 823, vdisplay 800
    [drm:drm_calc_timestamping_constants] crtc 4: clock 71110 kHz framedur 16665750 linedur 20250, pixeldur 14
    leave drm_crtc_helper_set_mode
    new mode 1280 x 800 pitch 5120
    leave set_mode
    leave set_user_mode
    SRV_SET_MODE inp 15540 inp_size 10
    enter set_user_mode
    width 1280 height 800 vrefresh 75
    enter set_mode
    width 1280 height 800 vrefresh 75
    leave set_mode
    leave set_user_mode
    SRV_SET_MODE inp 15540 inp_size 10
    enter set_user_mode
    width 1280 height 800 vrefresh 85
    enter set_mode
    width 1280 height 800 vrefresh 85
    leave set_mode
    leave set_user_mode
    SRV_SET_MODE inp 15540 inp_size 10
    enter set_user_mode
    width 1280 height 800 vrefresh 100
    enter set_mode
    width 1280 height 800 vrefresh 100
    leave set_mode
    leave set_user_mode
    SRV_SET_MODE inp 15540 inp_size 10
    enter set_user_mode
    width 1280 height 800 vrefresh 100
    enter set_mode
    width 1280 height 800 vrefresh 100
    leave set_mode
    leave set_user_mode
    SRV_SET_MODE inp 15540 inp_size 10
    enter set_user_mode
    width 1280 height 800 vrefresh 75
    enter set_mode
    width 1280 height 800 vrefresh 75
    leave set_mode
    leave set_user_mode
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    enter init_cursor
    enter i915_gem_alloc_object
    leave i915_gem_alloc_object
    enter i915_gem_object_pin
    enter i915_gem_object_bind_to_gtt
    enter i915_gem_object_get_pages_gtt
    leave i915_gem_object_get_pages_gtt
    enter i915_gem_gtt_bind_object
    leave i915_gem_gtt_bind_object
    leave i915_gem_object_bind_to_gtt
    leave i915_gem_object_pin
    leave init_cursor
    
  • Новая превьюшка с блекджеком и шлюхами Тест Fplay и блиттера.
    Это только превьюшка. В драйвере утечка памяти и нет синхронизации. Поэтому больше одного плеера с драйвером лучше не запускать.
    И не забудьте обновить ядро.
  • Увы :( 965GM

    Code: Select all

    
    i915 blitter preview
     cmdline: (null)
    PCI device 8086:2815 bus:0 devfn:f8
    PCI device 8086:2a02 bus:0 devfn:10
    PCI device 8086:2a00 bus:0 devfn:0
    Intel 965GM Chipset
    enter intel_gtt_init
    Error intel_i9xx_setup_flush can't ioremap flush page - no chipset flushing
    Info intel_gtt_init detected gtt size: 524288K total, 262144K mappable
    Info intel_gtt_stolen_size detected 8192K stolen memory
    leave intel_gtt_init
    device 8086:2a02
    enter drm_get_dev
    enter i915_driver_load
    [drm:intel_opregion_setup] graphic opregion physical addr: 0x3f672010
    [drm:intel_opregion_setup] Public ACPI methods supported
    [drm:intel_opregion_setup] SWSCI supported
    [drm:intel_opregion_setup] ASLE supported
    K : Process - forced terminate PID: 00000029
    
    K : Page fault
    
    K : EAX : 00000000 EBX : 80C260C8 ECX : 00000400
    
    K : EDX : 00000000 ESI : 00001000 EDI : 00971000
    
    K : EBP : 80C11CD8 EIP : 80CB59C4 ESP : 80C11CC8
    
    K : Flags : 00011206 CS : 00000008 (kernel)
    
    
  • Dell Inspiron N7010
    Работать то оно работает, но вот с новым FPLAY нагрузка наоборот увеличилась, где то на 20%, а где то и на все 50%.
    Spoiler:
    I915.LOG (7.21 KiB)
    Downloaded 136 times
    BOARDLOG.TXT (15.85 KiB)
    Downloaded 130 times
    На графике GMON видно:
    1 всплеск - старый плеер в режиме 1024*768 до активации драйвера.
    2 всплеск - старый плеер после активации драйвера и выбора родного режима 1600*900
    3 всплеск - новый плеер после активации драйвера и выбора родного режима 1600*900
    Логи приложены для второго теста (на картинке первое тестирование, логи которого я успешно похерил задумавшись). Во втором случае как раз наблюдалось потребление 10% до активации драйвера и 20% после активации.
    1.jpg
    1.jpg (209.99 KiB)
    Viewed 3190 times
    [offtop]на кадре ветеринар Мизантрпов Лечебус Викодиныч вешает лапшу школоте, что снимался вместе с Пятницей в pulp fiction[offtop]
  • Mario
    Странно это. А если померить новым плеером загрузку ЦПУ при отрисовке в видеопамять без драйвера. То есть запускаем плеер, смотрим на график загрузки, сворачиваем окно в заголовок и смотрим как изменилась загрузка. У меня на десктопе при сворачивании окошка загрузка падает в разы. Отрисовка в видеопамять идёт очень медленно. Если на ноуте отрисовка происходит очень быстро то с драйвером нагрузка может и возрасти.
    Spoiler:Видео 1280х720 24фпс Средняя загрузка 84%. После сворачивания окна в заголовок 8%. То есть отрисовка занимает до 75% времени. При отрисовке через блиттер средняя загрузка 10-11%, драйвер добавляет около 2%.
    1.png
    1.png (12.5 KiB)
    Viewed 3170 times
  • Serge wrote:А если померить новым плеером загрузку ЦПУ при отрисовке в видеопамять без драйвера.
    Так я же записал:
    Mario wrote:Во втором случае как раз наблюдалось потребление 10% до активации драйвера и 20% после активации.
    Как раз новый плеер и использовался. Ты случайно не перепутал бинарник FPLAY? Может не тот в архив положил.
    Сворачивать не пробовал попробую в обед или вечером и отпишусь.
    Единственно на что я грешу, то что при выводе в 1024*768 возможно отрисовывается быстрее при прочих равных условиях, чем в 1600*900. Однако в первом случае используется VESA, а во втором уже вроде как аппаратное ускорение должно быть задействовано.
  • Залил свежий код с Linux Git
    Много изменений, просьба потестить, в том числе и с плеером. И скорость видеопамяти тоже померить, см. пост выше.

    Mario
    Fplay тот, я по снимку экрана вижу :)
    Я неудачно применил в драйвере SSE2 что давало примерно +10% к загрузке.
    В свежей версии это пофиксил.
    Другое дело что если запись в видеопамять идёт очень быстро то
    1280*720*4*24fps=84Мб/с для процессора просто незаметны и разницы с блиттером нет.

    У меня скорость записи примерно 150Мб/с как и на дискретных Радеонах, чего я совсем не понимаю. Почему выделенная под видеопамять двухканальная DDR3 работает с такими тормозами ?
  • Dell Inspiron N7010
    Ты не поверишь!
    Spoiler:1. Первый горб это до активации драйвера, режим 1024*768.
    2. После активации драйвера, до смены режима.
    3. После смены режима на 1600*900.
    Сворачивание окна незначительно снижает нагрузку до активации драйвера. После акивации сворачивание не помогает - изображение видеопотока продолжает отрисовываться, но частично с мусором.
    1.jpg
    1.jpg (228.39 KiB)
    Viewed 3134 times
  • Mario
    Я у себя и не такое видел.
    Раньше видео правильно перекрывалось и сворачивалось, а теперь нет ?
    А всё дело в кеше. Блиттер использует хромакей, который я пишу в альфа канал. В результате практически вся картинка оказывается в кеше (она и без этого там сидит), а в ОЗУ старые данные и хромакей не работает как надо. Раньше я записывал хромакей maskmovdqu, она пишет прямо в OЗУ. Теперь перед тем как отправлять картинку блиттеру надо пройтись по ней clflush и сбросить из кеша.

    А если дефрагментировать файл график ровнее будет ?
  • Ну, насколько это возможно они уже дефрагментированы.
  • Ты забыл сказать про гранулы натуральных ягод смену ядра или образа на последнее.

    Dell Inspiron N7010
    Spoiler:
    I915.LOG (7.43 KiB)
    Downloaded 125 times
    BOARDLOG.TXT (29.02 KiB)
    Downloaded 122 times
    Что-то поломалось.
    Теперь после запуска драйвера рисуется пустое окно видеоплеера и проигрывается кусок звукового буфера в бесконечном цикле.
  • Eщё раз #4
    Пофиксил ошибку с зависанием. Должно работать. Я надеюсь.
  • Who is online

    Users browsing this forum: No registered users and 11 guests