Skip to content

revive Windows port#541

Merged
scottdraves merged 200 commits intomasterfrom
windows-vs2022-new
Apr 15, 2026
Merged

revive Windows port#541
scottdraves merged 200 commits intomasterfrom
windows-vs2022-new

Conversation

@scottdraves
Copy link
Copy Markdown
Contributor

No description provided.

glouel added 30 commits October 31, 2024 14:26
Early update of MSVC project :
- Using Visual Studio 2022 Community
- Using Clang-cl (clang + MSVC runtime)
- Fix some mac only stuff
- OSD.hpp duplicated to client (will need to be fixed in Xcode)
Remove outdated files from project (should be complete)
Add new files to project (should be complete)
Fix some platform issues

Next: fix intrinsics issues
Maybe take the opportunity to remove outdated manual smart pointers and replace them with modern C++ smart pointers?
Getting to DirectX
Notes :
- Event handling seems to have changed a lot in new client, will probably need to be redone for windows
- Update requires extra parameters now
- Still some intrinsic thing going on
Boost library 1.83 from https://sourceforge.net/projects/boost/files/boost-binaries/1.83.0/

We need the msvc 14.3 (aka vc143) static variants in both mt-gd (releases) and mt-sgd (debug)
Fix virtual functions added for Metal in DX renderer
Add virtual functions exclusively used by DX renderer
Switch to msvc's _aligned_buffer to allocate buffers directly aligned to page sizes. Most of this code seems to have been here only to deal with the lack of valloc on windows, and can probably be simplified further.
Additional fixes to correctly free the aligned buffers on windows
Using boost::log to get rid of the custom posix only implementation
- Fix somehow expected decoder frames that aren't quite there yet for a few ms. Could be it's not an issue with videotoolbox hw acceleration on Mac but is an issue with the software path. FFmpeg decoding threads seems to work and decode thread now
- Fix FFMPEG error that were disabled
- Implement thread naming on windows
- TODO : Find an equivalent for Mac's GCD dispatch_after / dispatch on main queue
- Demote some repetitive useless logging from curl to trace level
Move content to ` C:\ProgramData\e-dream` by default (safe location on all modern  windows systems).
New build target `DebugMD` should now be used to build and debug.

Libpng does require MD (multi threaded DLL compilation), this will likely also fix socket.io which also seemed to require this.
Add DX12 Agility SDK via NuGET
Base Display init
Move to DX12 headers from github as Agility SDK requires dll building
Remove old DirectX renderer
Fix various includes/imports, remove old SDK so that only DX12 remains and no conflict arises
Start moving client_win32 to D3D12
Move stuff to DeviceResources + DirectXTK (both from Microsoft, they supposedly simplify D3D12 handling and handle HDR)
Add texture loading (nearly done)
Anytime a GPU resource is needed, piggyback to DisplayOutputD3D12 that contains a unique_ptr to DirectX12 resources
Basic run loop with DX12 is now updating frames
Aligning on new changes on Mac
@scottdraves scottdraves merged commit 64b3521 into master Apr 15, 2026
scottdraves added a commit that referenced this pull request Apr 15, 2026
PR #541 accidentally re-added the removed lua distribution as
lua5.1-old/ — ~200 files including IDE state and build artifacts.
Nothing in the build references it. Also extend .gitignore to prevent
.vs/, *.vsidx, *.tlog, *.obj, *.pdb, *.idb from slipping in again.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
scottdraves added a commit that referenced this pull request Apr 15, 2026
PR #541 accidentally re-added the removed lua distribution as
lua5.1-old/ — ~200 files including IDE state and build artifacts.
Nothing in the build references it. Also extend .gitignore to prevent
.vs/, *.vsidx, *.tlog, *.obj, *.pdb, *.idb from slipping in again.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
scottdraves added a commit that referenced this pull request Apr 15, 2026
The 4.6 MB debug build of e-dreamd.exe leaked into RuntimeMSVC/ from
PR #541. .gitignore already ignores client_generic/RuntimeMSVC/*.exe,
but the file predated that rule.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
scottdraves added a commit that referenced this pull request Apr 17, 2026
Upgrades OpenSSL 1.0.2k (EOL 2019) to 3.6.1 via the existing vcpkg
manifest, and removes the vendored Windows binary blobs for ffmpeg,
boost, and curl that PR #541 introduced. Progress toward #549 — the
socket.io-client-cpp lib dir (219 MB) is intentionally left for a
follow-up once the WebSocket reconnect regression under vcpkg asio is
root-caused.

Cleaned electricsheep.vcxproj across all 8 configs: removed hardcoded
absolute paths (C:\boost_1_*, C:\local\boost_1_85_0, C:\Users\Jack\...
openssl build tree), vendored dep paths (..\ffmpeg\..., ..\openssl-1.0.2k,
..\curl\lib\...), CURL_STATICLIB define, and OpenSSL 1.0-era library
names (libeay32, ssleay32). Vcpkg manifest integration auto-resolves
include/lib paths via VCPKG_ROOT.

Deleted (216 MB, 346 files):
  client_generic/ffmpeg/win32/ffmpeg-6.1.1-93/   117 MB
  client_generic/openssl-1.0.2k/windows/          62 MB
  client_generic/boost/win32/lib/                 23 MB
  client_generic/curl/lib/debug-ssl-zlib/         14 MB

Verified Release|x64 build (0 errors) and runtime: HTTPS auth, video
playback, and WebSocket remote control all work against api-alpha
with vcpkg's OpenSSL 3.6.1, libcurl, ffmpeg, and boost DLLs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants