CleverMouse, Mario_r4
ну у меня то более шкурные интересы, я сишник с позицией "пользователь api", заинтересован в быстром 5551 цвете из-за tengine
да и вообще, понятие "никому не нужно" -- это философия, деструктивные мысли разрушает веру, CORE TEAM ДЕЛАЕТ ВЕЛИКОЕ ДЕЛО и это не обсуждается!
Mario_r4, твоя вежливость делает тебе честь и вызывает уважение, правду говорю.
Оптимизация ядерной графики
Посмотрел тут в код и увидел, что процитированный Serge кусок кода относится исключительно к 24bpp режиму. Для режимов 16bpp и 32bpp сделана запись словом и двойным словом одной командой:CleverMouse wrote:Функция 65 написана неправильно, её можно существенно ускорить, чтобы она не отличалась от 73, но, видимо, никому не нужно.
Code: Select all
mov [LFB_BASE+edx], ax
Code: Select all
mov [LFB_BASE+edx], eax
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
К сожалению, это не единственная проблема. Вызывать функцию на каждый пиксель накладно для CPU. Здесь проблема не столько потеря скорости, упор всё равно будет в запись, сколько лишние такты и лишние ватты.
Я как то не понимаю логики в словах "Вызывать функцию на каждый пиксель", ведь весь кусок изображения обрабатывается в пределах одной подпрограммы.Serge wrote:Вызывать функцию на каждый пиксель накладно для CPU. Здесь проблема не столько потеря скорости, упор всё равно будет в запись, сколько лишние такты и лишние ватты.
Spoiler:
Code: Select all
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
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Code: Select all
.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]
а ещё лучше для каждого случая свой кернел написать.
Еще раз - претензии по реализации звучали до моих изменений по проверке позиции курсора на ходу. Как раз эту проверку ты и выделил. Мне хочется понять те старые претензии, а то что есть сейчас я и сам в курсе - мы это обсуждали и результаты с ShadowBuffer был намного более проигрышными, чем текущая реализация проверки курсора. Речь же изначально шла по претензиям именно к ф.65. Никаких моих изменений с курсором тогда еще не было.
З.Ы. Или я под конец дня окончательно затупил...
З.Ы. Или я под конец дня окончательно затупил...
Last edited by Mario_r4 on Thu Nov 13, 2014 3:21 pm, edited 1 time in total.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Да причём здесь твои курсоры ? Этот кусок с call eax в ревизии 283 появился. Логи посмотри. И раньше была сначала проверка, потом выборка. А теперь наоборот.
Last edited by Serge on Thu Nov 13, 2014 3:24 pm, edited 1 time in total.
Сожалею, под конец дня туплю уже.Serge wrote:Да причём здесь твои курсоры ? Этот кусок с call eax в ревизии 283 появился. Логи посмотри.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
И полезет ЯВУшник в ядро,
и станет верх низом,
а низ верхом...
rev. #5580 (залил фикс сделанный полгода назад)
Оптимизация рисования кнопки - устранены перекрытия в рисовании.
Суть бага и как рисовалась кнопка раньше: вначале рисуется фон кнопки, потом поверх него накладывается прямоугольник из линий имитирующих выпуклость.
Как было исправлено: фон кнопки рисуется меньших размеров таким образом что линии имитирующие выпуклость его не перекрывают.
и станет верх низом,
а низ верхом...
rev. #5580 (залил фикс сделанный полгода назад)
Оптимизация рисования кнопки - устранены перекрытия в рисовании.
Суть бага и как рисовалась кнопка раньше: вначале рисуется фон кнопки, потом поверх него накладывается прямоугольник из линий имитирующих выпуклость.
Как было исправлено: фон кнопки рисуется меньших размеров таким образом что линии имитирующие выпуклость его не перекрывают.
Из хаоса в космос
Who is online
Users browsing this forum: No registered users and 1 guest