From b040b78379b9473a51e609b435aac0615a317f9a Mon Sep 17 00:00:00 2001 From: Maksymilian Wilczynski Date: Mon, 29 Dec 2025 21:04:40 +0100 Subject: [PATCH] idgaf just use Blt() --- OVMF/OVMF_VARS_4M.fd | Bin 540672 -> 540672 bytes fatroot/EFI/Boot/BootX64.efi | Bin 99840 -> 99840 bytes main.cpp | 74 +++++++++-------------------------- 3 files changed, 18 insertions(+), 56 deletions(-) diff --git a/OVMF/OVMF_VARS_4M.fd b/OVMF/OVMF_VARS_4M.fd index 0268d2ecd6cf17ce91df6ef271807716915a1ed6..1825dc48bd6ad4725fc1a1bb07dcef8b93703993 100644 GIT binary patch delta 204 zcmZo@P;3CAEsVb`C*MnQ+HPaTc!_JXpUo~-M)S>z$=w2s77)r3LRmp5YY1fnp==?P z9fY!nP!15v5kfgZC}#-e0-;Ax%)ofy4=?2BCOe6Eb! a`COUG^4kPh+5}kJ1lZaH*p~@#7ytlvXFi<( delta 58 zcmZo@P;3CAEsVb`r6JTu< NU~3a#Unam|005XK6ZrrD diff --git a/fatroot/EFI/Boot/BootX64.efi b/fatroot/EFI/Boot/BootX64.efi index 9b2dadd58314d7cee52321e422b97fc35d9af92f..9be6923e63e5c286e6a9527566b0ed621d26cae2 100644 GIT binary patch delta 18688 zcma*P34Bb~`#*l~NhTALNFs~KIw1&x5Nm9MsL=+YDcV{>EU~8~Xp0G=Xhg$N=G>a6HKeYiI_M@)=v;1f`Ali?91GxE7 z{pOM4qAv{xEcT`KfIhx-4`A@6z!s6>K~?$;kX4ly0Y+A(^MLTGR4Fo2yz-$B0egJt z8^9zV`Uzn4p??7OJ`~w9QXH>B;{kK3&<;RM6?zWvtU`5KMT)E5Gz75Rn^ptjyy-R| z#G8CuM+&PK^#pA8qWOSCFFFHg>_rvZM2a__^Z_8xlcoVuJm~-+%9Gv#96hON+emTB zgT?|fJZLK*)`Ok^d_1V8F;d*DOalR#m1!klP-VIf2(3)s?IOifcj^JicBi@Rnu!VS zbPUkOeSUi*#YMf#ckm&@nXpFXmhGOG`6~T}EBxMx) zp`_`w+Yw;bP2^<{DDIelpA zj@WWjaG(`)&y=-dC<_-OW}2R-pftHF zw?+x2yPST8Bl{iCD=pn?{3set(#_#&8E?2onr>z*`mVFDnZ-rRbsSotw8E689@V;p zgXu1-In5|!v0g30S){vc=Rh9>Old9)Tgs9(@huALDuJ>tsPqJ-Xj~>AD&57xHR?cs zF_@zSt&^UXmb&iFpHVYExdRm6u%ZGKSz<^;!xZUpBW&$?q#A-xfkev~9fXO^eH zLEh%bH#^E4(i>U(vAQ#>)1Xe1usRGe7kQkZIXCg|ai2UhqWY^R{7NzM1bN8ef!%gY2Aqg16PZYm%cxj9y zk6At{@PuNNTxYE2zqwH%!>60ye34uQtvvdadjJQ?C_0T9Su|BsycwJ9-7zBnM{W{d zZD?;*v^S%8fSTb=VsdlW-Dp}`L0R$jX0oJ2X5=SVL~}=S)nZ3xAWG55S*TDPd zM!Xr9>}5*xa%!P=LncJlet#-63&WvgP3!E~!sI-bui`Ln>Z-lm)aqzz*+F~apfmE5 z^e;1t9{j@tskF2}jfR%Fwc(c0N(#mJPc)V0^O#L6+G4BsqNyyQ+h(C9=rsl@X)um` zt{BG-!LiG-6hWtr+#KbCiw;S&P6I2S^heQI<-@Hzq>Qw&cgKhm=+lVvd+Bx;7xOiA z5YHyeB6LzXMl=N&%0~qn7^84Ln1=Z#%)-R7gC{8mSI)CD(|DeXX!UXEP4Uq@g}t(s z)9m46O6%dM&f*@9?dlfHUJx<|s)+MZScc3@+ok2V+k@_u+PyBpVUVVP)1-Ng`JW7f z(t6md88WmC%>E|<8g4=q85XDwnjITrG|i3No`;?`bBL;*?GGB zrkta$7*HDHmci>PU!g|ly%iyU{UYrrOfpO!4#qfRgxWp92u;f6*>U9^k5ep07*{Qa z2XmM&&547?^KGOH2V-(g%1l%G(X+{Ww}SGZ%S$)&P?}^n^nH{ z7B+KMcZ<>18O6R-QHp{Hf+g*0ha4E@=58m7`p(zd?!iB3)SUyqWwPf1t;PJp= zS}13qfQ1&b!!%pBS7~Jwx^lK|R~hH{c7^LU0**-seysV=FI=O!X}Z;bC1C-V&Ti+3 zgtI}98r@{jDNQJ|TUZq%7q-ACj156BlD#ySx=rYQx9)ml5n4KZ7qyIOE;cl#3QD}@$GH$>=z=EZc`+n z-))NP7i|6rT6Iu@e^&;@$&{`ef>pA3TyZ~)NK36;wv~_P@{fz#pgck=zxzt7{|%Q% z6bJsR{E%8+0r?kkxiXIP``hac+}xb?_f)YP@9M% z`m_xXWp8T|)gBm9$raZQ`!UwRzm}Ggd%71T4)k`of%-dE)0~0+3e8weTL;!xXrI+M z&%pWd?yjtZezNZWQYwHu4k5G9W z^OoP!xG{A+m^yv`{^EoM zmr4@7^rhF~i%fF8!TewA*VBiTM8zu3?E4$~BOqt{JZ22#sG5oYAYPUCQMWy
  • I%9jJ*1Pw~VT({}=L&Jek>j*BY%XwSE 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 diff --git a/main.cpp b/main.cpp index 0c96603..301f460 100644 --- a/main.cpp +++ b/main.cpp @@ -191,47 +191,6 @@ bool LoadBinkDLL(EFI_FILE_HANDLE volume) { return true; } -void Blit_AVX2_NT( - EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop, - uint32_t *src, - UINTN src_width, UINTN src_height -) { - EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info = Gop->Mode->Info; - UINTN fb_width = info->HorizontalResolution; - UINTN fb_height = info->VerticalResolution; - UINTN stride = info->PixelsPerScanLine; - - uint32_t *fb = (uint32_t *)Gop->Mode->FrameBufferBase; - - // Center offsets - UINTN x0 = (fb_width - src_width) / 2; - UINTN y0 = (fb_height - src_height) / 2; - - for (UINTN y = 0; y < src_height; y++) { - uint32_t *dst = fb + (y0 + y) * stride + x0; - uint32_t *s = src + y * src_width; - - UINTN x = 0; - - // Align destination pointer to 32-byte boundary for AVX2 streaming - for (; ((uintptr_t)(dst + x) & 31) && x < src_width; x++) - dst[x] = s[x]; - - // Copy 8 pixels (32 bytes) at a time using AVX2 non-temporal stores - for (; x + 7 < src_width; x += 8) { - __m256i data = _mm256_loadu_si256((__m256i *)(s + x)); - _mm256_stream_si256((__m256i *)(dst + x), data); - } - - // Copy any remaining pixels - for (; x < src_width; x++) - dst[x] = s[x]; - } - - // Ensure non-temporal stores are flushed to memory - _mm_sfence(); -} - EFI_STATUS SetMaxResolution(EFI_GRAPHICS_OUTPUT_PROTOCOL *Gop) { EFI_STATUS Status; EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *MaxModeInfo; @@ -413,7 +372,7 @@ EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) { printf("BinkSet* called\n"); - void* video_file = LoadFile(volume, L"idk.bk2"); + void* video_file = LoadFile(volume, L"video.bk2"); printf("Video file loaded into memory\n"); @@ -437,7 +396,7 @@ EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) { printf("Framebuffer allocated!\n"); EFI_INPUT_KEY key; - bool paused = false; + bool paused = true; uint64_t skipped = 0; // start the decode loop @@ -467,15 +426,17 @@ EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) { } // Wait for the next frame - while (pBinkWait(bink)) { + if (pBinkWait(bink)) { _mm_pause(); // don't burn CPU cycles + continue; } // Check if we should skip the frame - while (pBinkShouldSkip(bink)) { + if (pBinkShouldSkip(bink)) { pBinkNextFrame(bink); pBinkDoFrame(bink); skipped++; + continue; } int code = pBinkDoFrame(bink); @@ -490,7 +451,7 @@ EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) { } // Copy frame to our buffer - code = pBinkCopyToBuffer( + pBinkCopyToBuffer( bink, framebuffer, width * 4, @@ -499,19 +460,20 @@ EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) { 0, BINKSURFACE32 | BINKCOPYALL ); - if (code != 0 && code != 1) { // who knows what they mean - printf("BinkCopyToBuffer failed!\n"); - pBinkClose(bink); - Free(video_file); - Free(framebuffer); - gBS->Stall(5 * 1000 * 1000); - gST->RuntimeServices->ResetSystem(EfiResetShutdown, EFI_SUCCESS, 0, NULL); - return 1; - } pBinkNextFrame(bink); - Blit_AVX2_NT(gop, framebuffer, width, height); + gop->Blt( + gop, + (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)framebuffer, + EfiBltBufferToVideo, + 0, 0, + (gop->Mode->Info->HorizontalResolution - width) / 2, + (gop->Mode->Info->VerticalResolution - height) / 2, + width, + height, + 0 + ); if (bink->FrameNum % 10 == 0) printf("\rframe %d done ", bink->FrameNum);