Enabled AVX + Changed flush to flush 2 pixels per iteration.

This commit is contained in:
Kieron Morris 2021-07-03 18:52:45 +01:00
parent 142dd486dd
commit cd925e96c2
2 changed files with 28 additions and 5 deletions

View File

@ -291,6 +291,28 @@ begin
end;
end;
procedure enableAVX();
begin
if CPUID.Capabilities1^.AVX then begin
asm
PUSH EAX
PUSH ECX
PUSH EDX
XOR ECX, ECX
db $0F
db $01
db $D0
OR EAX, 7
db $0F
db $01
db $D1
POP EDX
POP ECX
POP EAX
end;
end;
end;
procedure init();
begin
terminal.registerCommand('CPU', @Terminal_Command_CPU, 'CPU Info.');
@ -300,6 +322,7 @@ begin
getCPUCapabilities;
getCPUClockSpeed;
enableSSE;
enableAVX;
end;
end.

View File

@ -125,14 +125,14 @@ end;
procedure Flush();
var
x,y : uint32;
Back,Front : PuInt32;
Back,Front : PuInt64;
begin
if not(VESA.BackBuffer.Initialized) then exit;
Back:= PUint32(VESA.BackBuffer.Location);
Front:= PuInt32(VESA.Framebuffer.Location);
for x:=0 to VESA.Framebuffer.Width-1 do begin
for y:=0 to VESA.Framebuffer.Height-1 do begin
Back:= PUint64(VESA.BackBuffer.Location);
Front:= PuInt64(VESA.Framebuffer.Location);
for x:=0 to (VESA.Framebuffer.Width-1) div 2 do begin
for y:=0 to (VESA.Framebuffer.Height-1) div 2 do begin
Front[(Y * VESA.Framebuffer.Width)+X]:= Back[(Y * VESA.Framebuffer.Width)+X];
end;
end;