Fix several Dreamcast hardware regressions found while testing real PVR behavior. - Upload the default white texture through the platform texture loader instead of memcpy directly into PVR texture memory. - Add GPUTextureLoad so SH4 uses pvr_txr_load while the software backend keeps memcpy behavior. - Track scissor/userclip application per polygon list and invalidate scissor state at buffer swap. - Submit queued geometry before USERCLIP/header transitions in the SH4 submit path. - Remove the stale packed 4bpp source-size double-halving in glTexImage2D. - Add texture regression coverage for packed 4bpp, unpack row length, compressed palette4 forwarding, and 8bpp-to-4bpp packing. - Update the scissor sample and add polygon_compare as a small hardware comparison sample. Verified: - make -C dcbuild gldc_tests scissor polygon_compare - scissor sample on Dreamcast hardware - polygon_compare sample on Dreamcast hardware - existing strided texture sample on Dreamcast hardware |
||
|---|---|---|
| containers | ||
| GL | ||
| include/GL | ||
| samples | ||
| tests | ||
| toolchains | ||
| tools | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| CMakeLists.txt | ||
| LICENSE | ||
| README.md | ||
GLdc
Development of GLdc has moved to Gitlab
This is a partial implementation of OpenGL 1.2 for the SEGA Dreamcast for use with the KallistiOS SDK.
It began as a fork of libGL by Josh Pearson but has undergone a large refactor which is essentially a rewrite.
The aim is to implement as much of OpenGL 1.2 as possible, and to add additional features via extensions.
Things left to (re)implement:
- Spotlights (Trivial)
- Framebuffer extension (Trivial)
- Texture Matrix (Trivial)
Things I'd like to do:
- Use a clean "gl.h"
- Define an extension for modifier volumes
- Add support for point sprites
- Optimise, add unit tests for correctness
Compiling
GLdc uses CMake for its build system, it currently ships with two "backends":
- kospvr - This is the hardware-accelerated Dreamcast backend
- software - This is a stub software rasterizer used for testing testing and debugging
To compile a Dreamcast debug build, you'll want to do something like the following:
mkdir dcbuild
cd dcbuild
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/Dreamcast.cmake -G "Unix Makefiles" ..
make
For a release build, replace the cmake line with with the following:
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/Dreamcast.cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..
For a release build WITHOUT building samples and tests, enter the following:
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/Dreamcast.cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF ..
You will need KallistiOS compiled and configured (e.g. the KOS_BASE environment variable must be set)
To compile for PC:
mkdir pcbuild
cd pcbuild
cmake -G "Unix Makefiles" ..
make
Special Thanks!
- Massive shout out to Hayden Kowalchuk for diagnosing and fixing a large number of bugs while porting GL Quake to the Dreamcast. Absolute hero!