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
The test could inherit a previously uploaded NPOT/strided texture from an earlier test, causing GL_REPEAT to be rejected before the POT upload occurred. Upload the POT texture before setting repeat wrap so the test verifies that POT textures still allow repeat wrapping.
Replaced GL_KOS_texture_stride with GL_KOS_texture_non_power_of_two
Removed the explicit texture parameter and made supported NPOT GL_TEXTURE_2D textures automatically use the PVR strided backend
Added clamp-only validation and retained the existing restrictions around mipmaps, wrapping, and unsupported formats
The underlying PVR strided implementation remains the same. GL_NV_texture_rectangle can be considered as a future follow-up.
Newest toolchain is bitchier, so I wanted to go ahead and clear up all
of the warnings from building GLdc and the various examples...
1) Set CMake CXX standard to 14 instead of 11, since CXXFLAGS were
enforcing that language standard anyway.
2) Fixed a bunch of strict aliasing violations in immediate.c: glVertex3f.
3) Removed or commented out lots of unused variables.
4) Fixed some "suggested inner braces on initializer" crap.
5) Fixed a bunch of signed vs unsigned pointer assignments.
6) Fixed several printf() warnings from using %d with int32_t (needs to
be %ld for long int).
7) Fixed build issue with Nehe20 from not including kos.h for the
KOS_ROMDISK macro.
8) Fixed some signed vs unsigned comparison mismatches in C++ template
instantiations within clipping tests.
9)