2018-05-15 02:27:25 +02:00
|
|
|
|
|
|
|
util_src = files(
|
|
|
|
'assert.c',
|
|
|
|
'crap.c',
|
|
|
|
'env.c',
|
2018-07-04 10:36:16 +02:00
|
|
|
'fbpair.c',
|
2018-05-15 02:27:25 +02:00
|
|
|
'geometry.c',
|
|
|
|
'graphics.c',
|
|
|
|
'io.c',
|
|
|
|
'kvparser.c',
|
|
|
|
'miscmath.c',
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
'pixmap.c',
|
2018-05-15 02:27:25 +02:00
|
|
|
'pngcruft.c',
|
2018-06-29 23:36:51 +02:00
|
|
|
'rectpack.c',
|
2018-05-15 02:27:25 +02:00
|
|
|
'stringops.c',
|
|
|
|
)
|
|
|
|
|
|
|
|
sse42_src += files(
|
|
|
|
'sse42.c',
|
|
|
|
)
|
|
|
|
|
|
|
|
if is_debug_build
|
|
|
|
util_src += files('debug.c')
|
|
|
|
endif
|
|
|
|
|
|
|
|
if host_machine.system() == 'windows'
|
2018-05-28 10:10:41 +02:00
|
|
|
# NOTE: Even if we ever build this with something like Midipix, we'd
|
|
|
|
# probably still want to use the winapi implementation of this here.
|
|
|
|
util_src += files('platform_win32.c')
|
|
|
|
else
|
|
|
|
# No have_posix check, it might just work.
|
|
|
|
util_src += files('platform_posix.c')
|
2018-05-15 02:27:25 +02:00
|
|
|
endif
|
2018-10-18 23:12:46 +02:00
|
|
|
|
|
|
|
subdir('pixmap_loaders')
|
|
|
|
util_src += pixmap_loaders_src
|