James Bryant
9279ab115e
build fix
25R1.0
2025-09-12 19:38:48 -07:00
James Bryant
28ef97d4f6
When launching an install or demo, it will now honor the global OpenGL backend. I also made LLVM Pipe the default global OpenGL backend for mac.
2025-09-12 19:26:44 -07:00
James Bryant
a633cb91af
couple minor tweak found while testing
2025-09-11 07:58:40 -07:00
James Bryant
77a946ecb3
forgot that Mac also uses platform/linux/platformOpenGL.cpp
2025-09-09 20:18:41 -07:00
James Bryant
a34fdc949e
Some work on Linux/OpenGL: Cinebench OpenGL test, Thief, Alice, Half-Life, Motorhead, Tomb Raider 3 and Descent 3 were all tested. Linux Mint x64 worked well for all, saw a few crashes but when I retried it worked. Cinebench OpenGL test was pretty fast with the Mesa/Intel driver for the embedded graphics card on the headless server. On my Mac Mini M1 with Asahi Linux, some OpenGL apps/games worked, like Alice, Half-Life and Tomb Raider 3. But the 3dfx games (using nGlide), Cinebench OpenGL test, and Thief all failed. I suspect its because the OpenGL driver on Asahi/M1 doesn't support older features of OpenGL.
2025-09-09 19:33:21 -07:00
James Bryant
945ac3d476
fix for xcode unit tests
2025-09-07 19:04:38 -07:00
James Bryant
b45ec1558d
Kind of went down the rabbit hole on this one. As I was testing on mac I noticed that I don't launch games from the UI into a new process like I do on Linux and Windows. If the game crashes, it also remove the UI. Turns out this is a very hard thing to do with sandboxed apps on Mac. I finally figured out how to launch the app, but it turns out for sandboxed apps you can supply command line arguments. So I had to invent a way to communicate between the UI process and the game process. I chose to do this via text files. There is a more official way of doing it with a helper app, but that looked even harder.
2025-09-07 18:48:38 -07:00
James Bryant
4b2b4a8581
I was able to export Boxedwine on my build machine and run it on a Mac that has never built Boxedwine and run an OpenGL game, so all the libraries were signed. I need to add a new entitlement, LLVM requires the "Allow Unsigned Executable Memory" entitlement. Hopefully the Jenkins will generate a build that works now too.
...
I also found a bug when running Broken Sword on the Mac, it was a regression caused by the Alice fix.
2025-09-07 10:14:27 -07:00
James Bryant
43ac5514b3
Updated codesign to use entitlements, but forgot to checkin the entitlements file that contained the JIT entitlement
2025-09-06 18:35:14 -07:00
James Bryant
108bf81c8b
The mac binary would launch but was unable to create JIT memory because it was missing the entitlement
2025-09-06 17:54:14 -07:00
James Bryant
ebe31c2925
create release branch
2025-09-06 15:32:11 -07:00
James Bryant
9f9a3cf676
for to check in the image for the readme
2025-09-06 15:24:35 -07:00
James Bryant
ef3abe2c92
Boxedwine.app failed to run on a different Mac from the build machine. The error was "bundle format is ambiguous (could be app or framework). When I looked into the Boxedwine.app, the sdl framework CurrentVersion directory wasn't a symlink to A, but was instead a copy. I will try to zip up the app in a way that preserves links.
2025-09-06 13:46:13 -07:00
James Bryant
90f65a10a0
another attempt at signing the mac binary. Now it will notarize it.
2025-09-06 12:49:55 -07:00
James Bryant
eb6404ca6a
Merge branch 'master' into james/mac_signing
2025-09-06 10:46:06 -07:00
James Bryant
306f2b0e69
trying to get the mac build signed during the jenkins build
2025-09-06 09:54:00 -07:00
James Bryant
1557a07761
Lots of little changes as I did performance testing across different platforms
...
1) ddraw override will be enabled by default if the app/game has ddraw.dll in the same folder as the app/game. This allows the install of GOG's Diablo/Hellfire to work without the user needing to know to add this override manually with winecfg
2) Removed winetricks from the UI since it mostly doesn't work
3) Removed DDraw auto refresh hack from the UI since this was never ported to Wine 9 or 10. I will revisit this later if needed
4) Update default recommended OpenGL extensions to try from the UI to better align with Quake 3 engine
5) Updated some translations.
6) Fixed a bug where Wine 10 was not defaulting to using Windows 10 in the install UI
7) Fixed an issue with mac lib dependency not being found on a machine that never build Boxedwine when trying to run Boxedwine.
8) Updated README.md with latest performance numbers
9) cpuid will now return Boxedwine as the name of the cpu
2025-09-05 20:36:14 -07:00
James Bryant
e0a493ee1c
normal core build fix
2025-09-04 19:33:59 -07:00
James Bryant
60d20c2c9c
normal core build fix
2025-09-04 19:26:35 -07:00
James Bryant
b7aef8359f
Some work on OpenGL vertexes. When calls like glVertexPointerEXT pass a pointer in, they don't pass in the length of the data. This makes it very hard to marshal the memory from the emulated memory space to the host memory space. Eventually a call like glDrawArrays will come along that will use the pointer supplied earlier, and glDrawArrays will pass in a count which will allow me to figure out the length of the memory pointer, but by then it might be too late. It's not possible to retroactively update the host pointer when glDrawArrays is called since that is illegal in OpenGL if it comes between glBegin and glEnd. This fix for Alice will be to map the pointer from glVertexPointerExt, etc, to 64k of host memory. If by the time glDrawArrays comes along, if the data is bigger it will resize the host memory and just hope for the best. For Alice, 64k was enough. The Alice demo now runs pretty well.
2025-09-04 19:09:41 -07:00
James Bryant
d5dd660c82
when in debug mode, put the opengl context in debug mode too
2025-09-03 19:41:43 -07:00
James Bryant
e98d5078da
Fixed an issue where Half-Life demo requested Wine 9 for installing, but Wine 9 wasn't already downloaded. The bug was that it would just default to Wine 10.
...
Also added the ability to automatically install mono for the Solitaire demo. And mono can now be manually install view the components drop down in the container tab.
2025-09-02 19:00:48 -07:00
James Bryant
4578aab1a9
I tested Wine 10.0 with the fix cherry picked from Wine 10.6 for GDI support in Daytona. That fix works. While testing I found that vkQuake which doesn't work well with Wine 10.0, was not automatically downloading Wine 9.0 when installing the app, when Wine 10.0 was installed.
2025-09-01 14:56:49 -07:00
James Bryant
34f457c4c6
Small change to allow a direct jump in the binary translator instead of looking up the address when possible. The performance improvement was small, but not within a margin of error. I ran them multiple times and the fastest old time was always slower than the slowest new time.
...
Performance on Win64
Quake 2
improved from 82.3 to 82.8 fps
Cinebench 11.5
improved 5.8 to 6.3
2025-09-01 09:48:47 -07:00
James Bryant
853aa59b86
Sometimes there can be a large set of instruction, more than 1000, without a branch. For the normal core this needs to be broken up so that we don't blow the stack.
2025-08-31 16:01:33 -07:00
James Bryant
71c10f6edd
fixed xcode unit tests.
2025-08-31 13:57:57 -07:00
James Bryant
0ebad9f2fd
some build fixes and unit test fixes. For shl and shr with a constant shift value, if that value is 0, the flags are not changed. I would be weird for this instruction to exist, but it is possible.
2025-08-31 13:21:33 -07:00
James Bryant
3d78fd98f0
Mac now works with the new code cache. Like the other platforms, it uses less memory and is a bit faster.
...
Performance
Hardware: Mac Mini M4
Cinebench 11.5
this: score 3.11 (1.62GB RAM - Activity Monitor)
build 122: score 2.78 (1.97GB RAM - Activity Monitor)
2025-08-31 11:57:41 -07:00
James Bryant
9d574cc88d
found a couple of issues while testing on linux
2025-08-30 20:42:25 -07:00
James Bryant
ef9122a8ce
x64 on Linux now works with the new cpu cache.
2025-08-30 19:16:00 -07:00
James
2c076e9cd4
Arm64 on Windows now works with the new code cache. It's a bit faster and uses less memory. Added popw/popd fix. Now iexplore works. Even though its running Wine 9 with the new ssl link fix, I still get one warning about certificates when running iexplore
...
Performance
Hardware: Mac Mini M4 running Windows 11 inside VMWare with 4 cores
Cinebench 11.5
this checkin: score 1.97 (1447MB host memory)
build 122: score 1.79 (1808MB host memory)
Quake 2
this checkin: 52.9fps (931MB host memory)
build 122: 48.9fps (1220MB host memory)
2025-08-30 17:44:44 -07:00
James Bryant
9901d4b213
x64: fxsave/fxrstor will now only be called when moving between the binary translator code and boxedwine code if the fpu/mmx/sse registers have changed. This improves performance of F-16. Quake 2 and Cinebench performance was not affected.
2025-08-29 08:59:41 -07:00
James Bryant
5c49151aaf
x64 improvements. A little bit faster and I fixed popw/popd, so iexplorer works. (forgot this file as part of the previous checkin)
2025-08-29 07:55:42 -07:00
James Bryant
df751c3631
x64 improvements. A little bit faster and I fixed popw/popd, so iexplorer works.
2025-08-28 21:05:53 -07:00
James Bryant
fc1180f39b
x64 binary translatore is now working with the new code cache. It's about the same speed, but it uses less memory. iexplore doesn't work, I assume x64 BT has a flag bug somewhere.
...
Quake 2
80.9fps and 1025MB Host RAM (build 122 80.3fps and 1284MB Host RAM)
Cinebench 11.5
score 6.00 1804MB Host RAM (build 122 score 5.86 and 2064MB Host RAM)
2025-08-27 20:47:41 -07:00
James Bryant
3562f06e11
can now poll on more than 256 handles. More web pages can now render with iexplore.
2025-08-23 14:42:37 -07:00
James Bryant
e014b26391
Figured out browser certificates. Now iexpore.exe launches winehq.org without any errors. I needed to link /etc/ssl to /usr/local/etc/ssl in the file system. Tiny Core Linux puts packages in /usr/local, but wine was expecting it in the root level /etc. The two changes in this checkin were a result of testing certificates with steam. Steam still doesn't work, but it gets farther. It can download and verify the files.
2025-08-23 11:48:34 -07:00
James Bryant
07aa2257d9
After thinking about it, I figured out a way to bring back currentLazyFlags optimization for JIT. The code will now check if the cpu.lazyFlags is equal the expected inlined lazy flags (currentLazyFlags). If not then it will call the slower path. Since this if statement is almost always true, there isn't much of a performance hit for it. Quake 2 is 14% faster, Cinebench stayed the same.
...
Performance:
Hardware: Windows 11 i7-14700
Quake2:
Win32 JIT: 31.1fps (prev 26.6)
Cinebench 11.5
Win32 JIT: 1.09 (prev 1.09)
2025-08-19 19:28:39 -07:00
James Bryant
d1003e8860
The purpose of this branch was to explore some ideas about performance improvements. I saw 5-10% performance improvements with the new decoded instruction cache for normal and JIT cpu cores. But as I was playing around with the code another idea popped up with threading and I added that in too (see common_lock.cpp). Now this branch is getting a little big with changes and I would like to start locking down the refactoring. I was able to get Cinebench to work for the first time with the normal and JIT cores which was exiting to see. After that I pushed a little more and for the first time ever, iexplorer.exe works and renders winehq.org with a few certificate errors which I will look at in the future. The new threading code helped with iexplorer, but a major bug fix that was needed in the JIT was for the instruction Pop Ed. Calculating the address for where to write the result of popping the stack is supposed to happen AFTER the stack (ESP) is incremented. Another JIT bug that came up was a flag calculation optimization. I had to remove "currentLazyFlags" from the JIT. This optimization assumed that if an instruction needed flags, a previous instruction would calculate it. But I didn't take into account looping and a later instruction might be the instruction that sets the flags. I was sad to see this optimization go, it slowed Quake 2 down by about 10%. So now Quake 2 is only a little faster than build 122 (master). But I think we can all agree its worth it to see more apps working.
...
Currently the binary translator is completely broken because of the new decoded instruction cache. I will address this next before considering merging to master.
Performance:
Hardware: Windows 11 i7-14700
Quake2:
Win32 Normal: 14.1fps (build 122 is 13.4fps)
Win32 JIT: 26.6fps (build 122 is 26.1fps)
Cinebench 11.5
Win32 Normal: 0.38
Win32 JIT: 1.09
2025-08-18 19:19:58 -07:00
kevodwyer
ee9e5fcdf3
emscripten - handle case where contents of app zip file is in a sub folder of the same name
2025-03-30 15:52:53 +01:00
James Bryant
3cb30d3106
trying to enable multiThreaded Emscripten again. It seems to work now that I no longer compile with PROXY_TO_PTHREAD. Fulltilt runs pretty smooth but the audio is a bit chopy, I'm not sure if this is buffering or just not enough speed for the emulation.
2025-03-29 11:38:01 -07:00
James Bryant
f0361d6120
Emscripten sound will be faked until the user clicks on the window. While it is faked, wine will think it is actually playing.
2025-03-29 09:59:22 -07:00
James Bryant
d23222ce00
emscripten multi-threaded build was enabled prematurely, there is still an audio issue.
2025-03-28 20:42:45 -07:00
James Bryant
6a6afe1d8d
enabling multi-threaded emscripten build
2025-03-28 17:59:22 -07:00
James Bryant
572ca8e38e
Can now enable zip file system read/write cache. This will copy files that are read or written to out of the zip and to the host file system. When not enabled, only file writes are copied from the zip file system to the host.
2025-03-28 17:04:22 -07:00
James Bryant
dde20d6cf5
Added documentation on how to create file system to be used on the web.
2025-03-28 16:07:00 -07:00
James Bryant
de98cd7a3d
some more work on OpenGL. I was trying to get Gun Metal Benchmark 2 to draw ground textures, that still doesn't work, although it works well with dxvk. But I did get some OpenGL tutorials and demos to work that didn't work before. I feel like vertexes might still have bugs when it comes to marshalling data.
2025-03-08 10:07:30 -08:00
James Bryant
1bb90d37c5
updated mac project file to recommended settings. There are no more warnings on the mac build
2025-02-28 19:20:50 -08:00
James Bryant
f92c5119b6
removed another 2 deletes of void* in vulkan.
2025-02-28 19:16:14 -08:00
James Bryant
e2c5c13b8b
fixed another casting warning in the vulkan code
2025-02-28 19:03:29 -08:00