Mario
Понятно. Родное разрешение там только одно, 1600х900. Остальные драйвер вычисляет сам и добавляет стандартные режимы VESA.
1366х768 похоже на баг драйвера. Обычно ширина кратна 8.
Update. Это не баг, это HDTV.
Встроенные видеокарты Intel
Т.е. программная эмуляция?
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
Похоже это твой случай. Виндовый драйвер проявляет немного сообразительности и генерирует промежуточные режимы. Точнее у него есть таблица всех возможных режимов которые он проверяет на доступность.
Эмуляция в том смысле, что параметры режима рассчитывает драйвер. Сам режим реальный.
Обычно драйвер читает 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
Это только превьюшка. В драйвере утечка памяти и нет синхронизации. Поэтому больше одного плеера с драйвером лучше не запускать.
И не забудьте обновить ядро.
Увы 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%.
1 всплеск - старый плеер в режиме 1024*768 до активации драйвера.
2 всплеск - старый плеер после активации драйвера и выбора родного режима 1600*900
3 всплеск - новый плеер после активации драйвера и выбора родного режима 1600*900
Логи приложены для второго теста (на картинке первое тестирование, логи которого я успешно похерил задумавшись). Во втором случае как раз наблюдалось потребление 10% до активации драйвера и 20% после активации.
[offtop]на кадре ветеринар Мизантрпов Лечебус Викодиныч вешает лапшу школоте, что снимался вместе с Пятницей в pulp fiction[offtop]
Работать то оно работает, но вот с новым FPLAY нагрузка наоборот увеличилась, где то на 20%, а где то и на все 50%.
Spoiler:
На графике GMON видно:1 всплеск - старый плеер в режиме 1024*768 до активации драйвера.
2 всплеск - старый плеер после активации драйвера и выбора родного режима 1600*900
3 всплеск - новый плеер после активации драйвера и выбора родного режима 1600*900
Логи приложены для второго теста (на картинке первое тестирование, логи которого я успешно похерил задумавшись). Во втором случае как раз наблюдалось потребление 10% до активации драйвера и 20% после активации.
Mario
Странно это. А если померить новым плеером загрузку ЦПУ при отрисовке в видеопамять без драйвера. То есть запускаем плеер, смотрим на график загрузки, сворачиваем окно в заголовок и смотрим как изменилась загрузка. У меня на десктопе при сворачивании окошка загрузка падает в разы. Отрисовка в видеопамять идёт очень медленно. Если на ноуте отрисовка происходит очень быстро то с драйвером нагрузка может и возрасти.
Странно это. А если померить новым плеером загрузку ЦПУ при отрисовке в видеопамять без драйвера. То есть запускаем плеер, смотрим на график загрузки, сворачиваем окно в заголовок и смотрим как изменилась загрузка. У меня на десктопе при сворачивании окошка загрузка падает в разы. Отрисовка в видеопамять идёт очень медленно. Если на ноуте отрисовка происходит очень быстро то с драйвером нагрузка может и возрасти.
Spoiler:
Видео 1280х720 24фпс Средняя загрузка 84%. После сворачивания окна в заголовок 8%. То есть отрисовка занимает до 75% времени. При отрисовке через блиттер средняя загрузка 10-11%, драйвер добавляет около 2%.Так я же записал:Serge wrote:А если померить новым плеером загрузку ЦПУ при отрисовке в видеопамять без драйвера.
Как раз новый плеер и использовался. Ты случайно не перепутал бинарник FPLAY? Может не тот в архив положил.Mario wrote:Во втором случае как раз наблюдалось потребление 10% до активации драйвера и 20% после активации.
Сворачивать не пробовал попробую в обед или вечером и отпишусь.
Единственно на что я грешу, то что при выводе в 1024*768 возможно отрисовывается быстрее при прочих равных условиях, чем в 1600*900. Однако в первом случае используется VESA, а во втором уже вроде как аппаратное ускорение должно быть задействовано.
Залил свежий код с Linux Git
Много изменений, просьба потестить, в том числе и с плеером. И скорость видеопамяти тоже померить, см. пост выше.
Mario
Fplay тот, я по снимку экрана вижу
Я неудачно применил в драйвере SSE2 что давало примерно +10% к загрузке.
В свежей версии это пофиксил.
Другое дело что если запись в видеопамять идёт очень быстро то
1280*720*4*24fps=84Мб/с для процессора просто незаметны и разницы с блиттером нет.
У меня скорость записи примерно 150Мб/с как и на дискретных Радеонах, чего я совсем не понимаю. Почему выделенная под видеопамять двухканальная DDR3 работает с такими тормозами ?
Много изменений, просьба потестить, в том числе и с плеером. И скорость видеопамяти тоже померить, см. пост выше.
Mario
Fplay тот, я по снимку экрана вижу
Я неудачно применил в драйвере SSE2 что давало примерно +10% к загрузке.
В свежей версии это пофиксил.
Другое дело что если запись в видеопамять идёт очень быстро то
1280*720*4*24fps=84Мб/с для процессора просто незаметны и разницы с блиттером нет.
У меня скорость записи примерно 150Мб/с как и на дискретных Радеонах, чего я совсем не понимаю. Почему выделенная под видеопамять двухканальная DDR3 работает с такими тормозами ?
Dell Inspiron N7010
Ты не поверишь!
2. После активации драйвера, до смены режима.
3. После смены режима на 1600*900.
Сворачивание окна незначительно снижает нагрузку до активации драйвера. После акивации сворачивание не помогает - изображение видеопотока продолжает отрисовываться, но частично с мусором.
Ты не поверишь!
Spoiler:
1. Первый горб это до активации драйвера, режим 1024*768.2. После активации драйвера, до смены режима.
3. После смены режима на 1600*900.
Сворачивание окна незначительно снижает нагрузку до активации драйвера. После акивации сворачивание не помогает - изображение видеопотока продолжает отрисовываться, но частично с мусором.
Mario
Я у себя и не такое видел.
Раньше видео правильно перекрывалось и сворачивалось, а теперь нет ?
А всё дело в кеше. Блиттер использует хромакей, который я пишу в альфа канал. В результате практически вся картинка оказывается в кеше (она и без этого там сидит), а в ОЗУ старые данные и хромакей не работает как надо. Раньше я записывал хромакей maskmovdqu, она пишет прямо в OЗУ. Теперь перед тем как отправлять картинку блиттеру надо пройтись по ней clflush и сбросить из кеша.
А если дефрагментировать файл график ровнее будет ?
Я у себя и не такое видел.
Раньше видео правильно перекрывалось и сворачивалось, а теперь нет ?
А всё дело в кеше. Блиттер использует хромакей, который я пишу в альфа канал. В результате практически вся картинка оказывается в кеше (она и без этого там сидит), а в ОЗУ старые данные и хромакей не работает как надо. Раньше я записывал хромакей maskmovdqu, она пишет прямо в OЗУ. Теперь перед тем как отправлять картинку блиттеру надо пройтись по ней clflush и сбросить из кеша.
А если дефрагментировать файл график ровнее будет ?
Ну, насколько это возможно они уже дефрагментированы.
Ты забыл сказать про гранулы натуральных ягод смену ядра или образа на последнее.
Dell Inspiron N7010
Что-то поломалось.
Теперь после запуска драйвера рисуется пустое окно видеоплеера и проигрывается кусок звукового буфера в бесконечном цикле.
Dell Inspiron N7010
Spoiler:
Теперь после запуска драйвера рисуется пустое окно видеоплеера и проигрывается кусок звукового буфера в бесконечном цикле.
Eщё раз #4
Пофиксил ошибку с зависанием. Должно работать. Я надеюсь.
Пофиксил ошибку с зависанием. Должно работать. Я надеюсь.
Who is online
Users browsing this forum: No registered users and 2 guests