Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Apr 23, 2019 9:22 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 249 posts ]  Go to page Previous 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 ]
Total votes: 66
Author Message
PostPosted: Wed Nov 05, 2014 4:34 pm 
Offline
User avatar

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

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


Top
   
PostPosted: Thu Nov 13, 2014 2:01 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
CleverMouse wrote:
Функция 65 написана неправильно, её можно существенно ускорить, чтобы она не отличалась от 73, но, видимо, никому не нужно.

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

Code:
        mov     [LFB_BASE+edx], eax

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


Top
   
PostPosted: Thu Nov 13, 2014 2:42 pm 
Offline
Kernel Developer

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


Top
   
PostPosted: Thu Nov 13, 2014 2:46 pm 
Offline
Kernel Developer

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

Я как то не понимаю логики в словах "Вызывать функцию на каждый пиксель", ведь весь кусок изображения обрабатывается в пределах одной подпрограммы.
Spoiler: Show
Code:
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 лет себе в жопу!


Top
   
PostPosted: Thu Nov 13, 2014 3:02 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Code:
  .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]
а ещё лучше для каждого случая свой кернел написать.


Top
   
PostPosted: Thu Nov 13, 2014 3:13 pm 
Offline
Kernel Developer

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

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

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


Last edited by Mario_r4 on Thu Nov 13, 2014 3:21 pm, edited 1 time in total.

Top
   
PostPosted: Thu Nov 13, 2014 3:20 pm 
Offline
Kernel Developer

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


Last edited by Serge on Thu Nov 13, 2014 3:24 pm, edited 1 time in total.

Top
   
PostPosted: Thu Nov 13, 2014 3:21 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Serge wrote:
Да причём здесь твои курсоры ? Этот кусок с call eax в ревизии 283 появился. Логи посмотри.

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

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


Top
   
PostPosted: Sun Jul 19, 2015 7:03 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 4983
И полезет ЯВУшник в ядро,
и станет верх низом,
а низ верхом...


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

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 249 posts ]  Go to page Previous 113 14 15 16 17

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited