Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт ноя 21, 2017 5:50 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 249 сообщений ]  На страницу Пред. 113 14 15 16 17

Ваше мнение об оптимизации GUI ядра
Оставить как было 24%  24%  [ 16 ]
Убрать только CGA и VGA, оставить VESA1.2 8%  8%  [ 5 ]
Оставить только VESA2-режимы (без изменения) 9%  9%  [ 6 ]
Разделить 24 и 32bpp графику в условно-компилируемые блоки 26%  26%  [ 17 ]
Оставить в ядре единственный 32bpp-режим 33%  33%  [ 22 ]
Всего голосов: 66
Автор Сообщение
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Ср ноя 05, 2014 4:34 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Сб июл 05, 2014 11:15 am
Сообщения: 87
CleverMouse, Mario_r4
ну у меня то более шкурные интересы, я сишник с позицией "пользователь api", заинтересован в быстром 5551 цвете из-за tengine
да и вообще, понятие "никому не нужно" -- это философия, деструктивные мысли разрушает веру, CORE TEAM ДЕЛАЕТ ВЕЛИКОЕ ДЕЛО и это не обсуждается!

Mario_r4, твоя вежливость делает тебе честь и вызывает уважение, правду говорю.


Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 2:01 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
CleverMouse писал(а):
Функция 65 написана неправильно, её можно существенно ускорить, чтобы она не отличалась от 73, но, видимо, никому не нужно.

Посмотрел тут в код и увидел, что процитированный Serge кусок кода относится исключительно к 24bpp режиму. Для режимов 16bpp и 32bpp сделана запись словом и двойным словом одной командой:
Код:
        mov     [LFB_BASE+edx], ax

Код:
        mov     [LFB_BASE+edx], eax

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 2:42 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
К сожалению, это не единственная проблема. Вызывать функцию на каждый пиксель накладно для CPU. Здесь проблема не столько потеря скорости, упор всё равно будет в запись, сколько лишние такты и лишние ватты.


Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 2:46 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
Вызывать функцию на каждый пиксель накладно для CPU. Здесь проблема не столько потеря скорости, упор всё равно будет в запись, сколько лишние такты и лишние ватты.

Я как то не понимаю логики в словах "Вызывать функцию на каждый пиксель", ведь весь кусок изображения обрабатывается в пределах одной подпрограммы.
Спойлер: Показать
Код:
align 4
put_image_end_32:

        mov     edi, [putimg.real_sy]

; check for hardware cursor
        mov     ecx, [_display.select_cursor]
        cmp     ecx, select_cursor
        je      put_image_end_32_new
        cmp     ecx, 0
        je      put_image_end_32_old

  .new_line:
        mov     ecx, [putimg.real_sx]

  .new_x:
        push    [putimg.edi]
        mov     eax, [putimg.ebp+4]
        call    eax
        cmp     [ebp], bl
        jne     .skip

; store to LFB
        mov     [LFB_BASE+edx], eax

  .skip:
        add     edx, 4
        inc     ebp
        dec     ecx
        jnz     .new_x

        add     esi, [putimg.line_increment]
        add     edx, [putimg.screen_newline]
        add     ebp, [putimg.winmap_newline]

        cmp     [putimg.ebp], putimage_get1bpp
        jz      .correct
        cmp     [putimg.ebp], putimage_get2bpp
        jz      .correct
        cmp     [putimg.ebp], putimage_get4bpp
        jnz     @f

  .correct:
        mov     eax, [putimg.edi]
        mov     byte [eax], 80h

  @@:
        dec     edi
        jnz     .new_line

  .finish:
        add     esp, putimg.stack_data
        popad
        cmp     [SCR_MODE], 0x12
        jne     @f
        call    VGA__putimage
  @@:
        mov     [EGA_counter], 1
        ret

Или имеется ввиду проверка курсора? Но та тема на которую ссылалась CleverMouse поднималась еще до моих изменений с курсором - 2008 год же!

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 3:02 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Код:
  .new_x:
        push    [putimg.edi]
        mov     eax, [putimg.ebp+4]

!!!!!!!!!!!!!!! Surprise
        call    eax
!!!!!!!!!!!!!!!!
        cmp     [ebp], bl
        jne     .skip

; store to LFB
        mov     [LFB_BASE+edx], eax

  .skip:
        add     edx, 4
        inc     ebp
        dec     ecx
        jnz     .new_x
Тут для оптимизаторов не паханное поле. Сделать проверку отсечения до выборки пикселя,
заменить
push [putimg.edi]
mov eax, [putimg.ebp+4]
call eax

на
mov eax, [putimg.edi]
call [putimg.ebp+4]
а ещё лучше для каждого случая свой кернел написать.


Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 3:13 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Еще раз - претензии по реализации звучали до моих изменений по проверке позиции курсора на ходу. Как раз эту проверку ты и выделил. Мне хочется понять те старые претензии, а то что есть сейчас я и сам в курсе - мы это обсуждали и результаты с ShadowBuffer был намного более проигрышными, чем текущая реализация проверки курсора. Речь же изначально шла по претензиям именно к ф.65. Никаких моих изменений с курсором тогда еще не было.

З.Ы. Или я под конец дня окончательно затупил...

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Последний раз редактировалось Mario_r4 Чт ноя 13, 2014 3:21 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 3:20 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Да причём здесь твои курсоры ? Этот кусок с call eax в ревизии 283 появился. Логи посмотри. И раньше была сначала проверка, потом выборка. А теперь наоборот.


Последний раз редактировалось Serge Чт ноя 13, 2014 3:24 pm, всего редактировалось 1 раз.

Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Чт ноя 13, 2014 3:21 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
Да причём здесь твои курсоры ? Этот кусок с call eax в ревизии 283 появился. Логи посмотри.

Сожалею, под конец дня туплю уже.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Оптимизация ядерной графики
СообщениеДобавлено: Вс июл 19, 2015 7:03 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4226
И полезет ЯВУшник в ядро,
и станет верх низом,
а низ верхом...


rev. #5580 (залил фикс сделанный полгода назад)
Оптимизация рисования кнопки - устранены перекрытия в рисовании.

Суть бага и как рисовалась кнопка раньше: вначале рисуется фон кнопки, потом поверх него накладывается прямоугольник из линий имитирующих выпуклость.
Как было исправлено: фон кнопки рисуется меньших размеров таким образом что линии имитирующие выпуклость его не перекрывают.

_________________
Через тернии к звездам


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 249 сообщений ]  На страницу Пред. 113 14 15 16 17

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB