Commit Graph

384 Commits

Author SHA1 Message Date
Luke Benstead
41ee67cbf1 Code cleanup 2019-03-28 13:10:53 +00:00
Luke Benstead
e15a47b6fb Use the list stored on the SubmissionTarget 2019-03-28 13:09:36 +00:00
Luke Benstead
3cd15de332 Add additional traces 2019-03-28 13:09:04 +00:00
Luke Benstead
8982444406 Consistently allow > 16384 verts 2019-03-28 13:07:53 +00:00
Luke Benstead
cd04784c33 Fix memory corruption 2019-03-28 13:05:13 +00:00
Luke Benstead
30f8564298 Fix glDrawElements 2019-03-27 09:39:06 +00:00
Luke Benstead
434f316526 Switch pointer comparisons for counters 2019-03-26 09:09:07 +00:00
Luke Benstead
d44a24d339 Add assertions 2019-03-25 19:43:03 +00:00
Luke Benstead
9e12e15a13 Make use of swapVertex 2019-03-25 19:30:45 +00:00
Luke Benstead
bdeb9cd45a Restore clipping case that apparently can happen after all 2019-03-25 19:04:50 +00:00
Luke Benstead
493592ea30 Tweaks 2019-03-25 16:07:27 +00:00
Luke Benstead
ba04f62f6d Minor optimisation 2019-03-25 16:07:12 +00:00
Luke Benstead
f712f00602 Don't do anything if there are no vertices submitted 2019-03-25 16:06:41 +00:00
Luke Benstead
4355d0f224 Add additional profiler checkpoints 2019-03-25 16:06:28 +00:00
Luke Benstead
70feea6c6f Minor optimisations 2019-03-25 16:05:36 +00:00
Luke Benstead
b771a5339b Send colours as bytes in immediate mode 2019-03-25 12:56:48 +00:00
Luke Benstead
8fd90bd040 Switch back to normal swapping 2019-03-25 12:38:34 +00:00
Luke Benstead
0e71588e6c Try to optimise the quad generation 2019-03-25 10:33:05 +00:00
Luke Benstead
671881eafd Optimise GL_POLYGON rendering 2019-03-25 09:48:58 +00:00
Luke Benstead
291e82d18a Rename ClipVertex -> Vertex 2019-03-25 09:44:59 +00:00
Luke Benstead
bd0ef4cba3 Demo multitexturing in zclip, default to GL_MODULATE on multitexture 2019-03-24 14:09:52 +00:00
Luke Benstead
5e6927d9a1 Huge refactor of the drawing code 2019-03-24 08:09:02 +00:00
Luke Benstead
3cb24c4fb4 Rename some functions 2019-03-14 13:16:55 +00:00
Luke Benstead
e9c8836181 Huge cleanup of glDrawElements handling 2019-03-14 13:15:56 +00:00
Luke Benstead
1ee16d8ee1 Slight optimisation 2019-03-13 17:38:42 +00:00
Luke Benstead
7c33f13438 Allow configuring initial capacities 2019-03-13 15:43:50 +00:00
Luke Benstead
d9539da841 Optimisations 2019-03-13 15:35:42 +00:00
Luke Benstead
8101e43e90 Fix winding issue 2019-03-13 15:19:28 +00:00
Luke Benstead
724ff628aa Fix some signedness issues 2019-03-13 15:14:09 +00:00
Luke Benstead
8b206f012e Make sure we correctly initalize the used banks 2019-03-13 12:05:06 +00:00
Luke Benstead
5bf58ec1a8 Refactor array submission to be (hopefully) faster 2019-03-13 11:24:35 +00:00
Luke Benstead
5da1ed732a Bump the default vbuf capacity 2019-03-13 08:53:35 +00:00
Luke Benstead
3d8fa7027b Properly forward the internal_palette_format 2019-03-13 08:51:05 +00:00
Luke Benstead
2ad23b1e16 Update version string 2019-03-11 19:54:55 +00:00
Luke Benstead
8b13e3adaf Reserve 0 in the framebuffer thing (WIP) 2019-03-11 19:24:08 +00:00
Luke Benstead
957ebfa662 Fix texture twiddling 2019-03-11 19:14:30 +00:00
Luke Benstead
588c082ec8 Allow specifying palette, autosort, memory options via glKosInitEx 2019-03-11 19:07:59 +00:00
Luke Benstead
8f26e9c364 Fix a bug in the morton_index function 2019-03-11 09:12:48 +00:00
Luke Benstead
a561fd469f Protect against invalid read 2019-03-10 20:18:11 +00:00
Luke Benstead
834599dc4b Add glDrawBuffer stub 2019-03-10 20:05:40 +00:00
Luke Benstead
7512c1e767 Fix GL_ALPHA_TEST sample 2019-03-10 19:59:34 +00:00
Luke Benstead
e4186a05bf Start working on a test for GL_ALPHA_TEST 2019-03-10 19:38:47 +00:00
Luke Benstead
04dab8da9a Implement glAlphaFunc and glEnable(GL_ALPHA_TEST) 2019-03-10 17:53:58 +00:00
Luke Benstead
25bd3aedc8 Increase the max polygon size to 32 2019-03-10 16:10:59 +00:00
Luke Benstead
91c3b66d73 Add GL_MODELVIEW_MATRIX as an option to glGetFloatv 2019-03-10 12:30:39 +00:00
Luke Benstead
b00b65af54 Fix issues with triangle fans / polygons 2019-03-10 12:24:27 +00:00
Luke Benstead
1807a0119c Add some missing function stubs 2019-03-10 12:19:45 +00:00
Luke Benstead
259a82e69f Add support for multiple shared palettes 2019-03-10 11:18:56 +00:00
Luke Benstead
864dc45d10 Allocate palette slots on a FIFO basis 2019-03-09 14:32:50 +00:00
Luke Benstead
4d6cea59b7 Increase the max texture count 2019-03-08 21:38:39 +00:00
Luke Benstead
516cae7893 Store palettes in RAM not VRAM 2019-03-08 21:36:53 +00:00
Luke Benstead
ac3ffb9ce0 Make the binary symbols more compatible 2019-03-08 21:36:53 +00:00
Luke Benstead
df3cdf0ebb Fix drawing polygons. Fixes #35 2019-03-07 21:41:25 +00:00
Luke Benstead
d7342fa0c0 Automatically twiddle non-twiddled palette data 2019-03-07 21:21:30 +00:00
Luke Benstead
3e1ed8a5f7 Don't reserve more space than we need 2019-03-06 08:31:06 +00:00
Luke Benstead
d89997a277 Simplify the element drawing 2019-03-04 20:41:33 +00:00
Luke Benstead
7c0a123aac Correctly initialize the shared palette. Fixes #34 2019-03-04 08:44:19 +00:00
Luke Benstead
efa63ebff2 Don't apply the shared palette if it hasn't been specified yet. Fixes #34 2019-03-04 08:42:24 +00:00
Luke Benstead
11bb588279 Make sure we reupload the palette if it's changed by glColorTableEXT 2019-03-03 20:21:42 +00:00
Luke Benstead
526b1f0d16 Add some assertions 2019-03-03 19:49:28 +00:00
Luke Benstead
ba4fde3975 Fix depth funcs 2019-03-03 19:41:19 +00:00
Luke Benstead
44ca14bcbd Add assertions 2019-03-03 19:11:53 +00:00
Luke Benstead
5f7fef2cf9 Prefix non-static private functions with '_gl' 2019-03-03 19:06:01 +00:00
Luke Benstead
926214bd82 Prefix some non-static private functions with '_gl' 2019-03-03 19:02:25 +00:00
Luke Benstead
2382126603 Make palette binding lazy 2019-03-03 18:56:18 +00:00
Luke Benstead
ef06af793a Don't apply the color table unless a texture is bound 2019-03-03 18:54:25 +00:00
Luke Benstead
3c3018450f Support twiddled and non-twiddled paletted textures 2019-03-03 18:49:33 +00:00
Luke Benstead
d12032c961 Store palette data in PVR ram 2019-03-03 18:49:06 +00:00
Luke Benstead
f349cd1b49 Fix packing order issue (thanks @mrneo240!) 2019-03-03 18:48:50 +00:00
Luke Benstead
cf273eab42 Add glTexParameterf (thanks @mrneo240) 2019-02-28 19:21:16 +00:00
Luke Benstead
b0c9ac7207 Remove zero special casing from named array 2019-02-28 18:33:37 +00:00
Luke Benstead
31ed419dfa Don't allow zero as a valid texture ID 2019-02-28 18:28:55 +00:00
Luke Benstead
02937ccd2c Add stub with just GL_PROJECTION_MATRIX supported 2019-02-28 08:46:13 +00:00
Luke Benstead
111d4ca83e Handle calling glBindTexture on an unknown name 2019-02-27 20:45:53 +00:00
Luke Benstead
f6af3ab3fb Implement new conversion 2019-02-27 20:11:14 +00:00
Luke Benstead
920fc2b782 Increase the max number of textures to 512. Add config.h for settings like this. Fixes #29 2019-02-25 08:30:02 +00:00
Luke Benstead
7368f5c290 Add GL_SHARED_TEXTURE_PALETTE_EXT as a valid target to glColorTableEXT. Fixes #27 2019-02-25 08:26:04 +00:00
Luke Benstead
6d2c47bda1 Implement GL_EXT_shared_texture_palette 2019-02-21 21:58:31 +00:00
Luke Benstead
50f1e277d8 Merge branch 'master' into ext-paletted-texture 2019-02-21 21:26:23 +00:00
Luke Benstead
571438ef4e Implement glColorTableEXT 2019-02-21 20:35:18 +00:00
Luke Benstead
df44c0ea73 More performance work and fix bugs introduced in last commit 2018-10-09 09:27:53 +01:00
Luke Benstead
18759422ea Optimise non-indexed rendering paths 2018-10-08 22:03:50 +01:00
Luke Benstead
c84f211ad0 More work towards paletted textures 2018-09-22 20:45:17 +01:00
Luke Benstead
e4f8cb8c9b Add a width limit 2018-09-20 16:48:26 +01:00
Luke Benstead
9645b10ed6 Add paletted texture to the supported extensions 2018-09-20 15:11:01 +01:00
Luke Benstead
8670fd459c More conversions 2018-09-20 15:10:08 +01:00
Luke Benstead
741707ac85 Implement conversions to RGBA8 2018-09-20 15:08:06 +01:00
Luke Benstead
21ad46ad94 Make it clear that some things aren't yet implemented 2018-09-20 15:02:22 +01:00
Luke Benstead
baf7cf5bdd Stub out glColorTableEXT 2018-09-20 15:01:13 +01:00
Luke Benstead
52e1be498e Keep header pointer updated. Fixes #25 (hopefully...) 2018-09-19 17:11:56 +01:00
Luke Benstead
e36f561ec0 Improve check 2018-09-15 17:41:58 +01:00
Luke Benstead
6aadc1124f Fix another zclipping bug 2018-09-15 17:38:42 +01:00
Luke Benstead
bc2fb6b658 Fix a clipping bug 2018-09-15 16:03:21 +01:00
Luke Benstead
7100ebe5a9 Prefix some non-static private methods 2018-09-15 11:45:38 +01:00
Luke Benstead
6cfccbd20d Inline + Static some lighting functions 2018-09-15 11:42:56 +01:00
Luke Benstead
e68c051991 Add missing glColorMaterial definition 2018-09-15 11:42:42 +01:00
Luke Benstead
17c9699966 More clipping fixes 2018-09-08 20:53:28 +01:00
Luke Benstead
06b065dc7e Return the correct count from clip 2018-09-06 20:08:55 +01:00
Luke Benstead
93af697092 Don't include the header in startOffset 2018-09-06 20:00:18 +01:00
Luke Benstead
d9fa69c288 Fix invalid memory access bug 2018-09-06 19:46:04 +01:00
Luke Benstead
b4539443f5 Allow toggling debug logging 2018-09-06 19:45:52 +01:00
Luke Benstead
e82646faff Remove old clipping code 2018-09-06 19:22:25 +01:00
Luke Benstead
af54c96ff4 Implement new culling algorithm, still some issues when GL_CULL_FACE is enabled 2018-09-06 19:19:00 +01:00
Luke Benstead
517d21b487 Begin implementing a new clipping algorithm 2018-09-03 21:48:42 +01:00
Luke Benstead
19491173e5 Set registers correctly before using store queues.
Fixes #23
2018-09-03 20:47:24 +01:00
Luke Benstead
55b3aa4ddd Fix up twiddled formats with alpha 2018-08-28 17:51:33 +01:00
Luke Benstead
963eeb54da Start work on spotlights 2018-08-28 15:55:50 +01:00
Luke Benstead
c191ced3f9 Fix issues with directional lights 2018-08-28 09:24:51 +01:00
Luke Benstead
acaecf49bc Add a missing header 2018-08-27 21:35:15 +01:00
Luke Benstead
8b3bf5a579 Fix lighting wrapping 2018-08-27 21:35:07 +01:00
Luke Benstead
8ef04be966 Try to fix directional lights 2018-08-27 20:54:20 +01:00
Luke Benstead
b29303fb6c Implement glColorMaterial 2018-08-22 09:24:49 +01:00
Luke Benstead
21f8f9d855 Properly restore state after glEnd 2018-08-21 16:15:43 +01:00
Luke Benstead
9b0322ce8a Properly restore enabled client state when using immediate mode 2018-08-21 16:08:06 +01:00
Luke Benstead
edae8a9166 Properly pop active client texture in immediate mode 2018-08-21 15:50:59 +01:00
Luke Benstead
25de48b3f6 Fix a bug where only one texture would bind 2018-08-21 15:50:41 +01:00
Luke Benstead
8b834ac3f1 Avoid an additional copy of every vertex. Fixes #22 2018-08-21 09:37:19 +01:00
Luke Benstead
bccd1aa788 Start refactoring the submission process 2018-08-20 21:19:12 +01:00
Luke Benstead
80c65d4aff Remove conditional header sending, it's slightly slower 2018-08-20 20:34:11 +01:00
Luke Benstead
da97483eee Switch to using 4-byte colours internally rather than floats
These are stored in BGRA format so they can be directly cast to a uint32_t to get the
correct format for the argb param in pvr_vertex_t (yay endianess)

This results in a performance improvement as it reduces the data requirements.
2018-08-20 09:28:30 +01:00
Luke Benstead
26bd8df37c Fix some bugs with mipmaps + compressed textures 2018-08-20 08:34:54 +01:00
Luke Benstead
25e4518501 Performance optimisations 2018-08-19 21:10:42 +01:00
Luke Benstead
348e09b4aa Further optimisations 2018-08-17 21:40:27 +01:00
Luke Benstead
37ba9bf3c3 Mark mipmap levels as complete when generated 2018-08-16 17:53:39 +01:00
Luke Benstead
ba66608a96 Add a basic profiler and optimise some code 2018-08-16 17:51:15 +01:00
Luke Benstead
7d1b57fb12 Handle GL_RED -> GL_RED 2018-08-14 15:55:03 +01:00
Luke Benstead
021237f258 Fix a number of issues with texture loading 2018-08-14 09:49:31 +01:00
Luke Benstead
dca991ffe3 Fix a number of minor issues with textures 2018-08-13 09:19:16 +01:00
Luke Benstead
e7cd91a91f Try to match GL filtering with PVR filtering 2018-08-09 09:32:29 +01:00
Luke Benstead
5c190c1095 Implement glGenerateMipmapEXT 2018-08-09 08:56:43 +01:00
Luke Benstead
c6ba127bc9 Always allocate room for mipmaps 2018-08-08 16:50:09 +01:00
Luke Benstead
4c99dd740a Add support for mipmapped compressed textures 2018-08-08 09:50:57 +01:00
Luke Benstead
b06f6116c8 Detect multiple mipmap levels being uploaded to glCompressedTexImage2D 2018-08-08 08:45:25 +01:00
Luke Benstead
86dd5dd2b2 glCompressedTexImage2D is an ARB extension in OpenGL 1.2.1 2018-08-07 20:49:10 +01:00
Luke Benstead
c40d3a007d Implement support for GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB and GL_COMPRESSED_TEXTURE_FORMATS_ARB 2018-08-07 20:46:26 +01:00
Luke Benstead
16d949bfbc Clean up compressed texture constants and code 2018-08-07 20:22:44 +01:00
Luke Benstead
0b91c20bbd Add support for getting the max texture size 2018-08-07 08:45:24 +01:00
Luke Benstead
85d4bb5ec3 Fix directional lighting bug 2018-08-05 14:38:04 +01:00
Luke Benstead
582a29d267 Add glMultiTexCoord2fARB 2018-08-05 09:09:38 +01:00
Luke Benstead
6942e597f4 Untested multitexture implementation 2018-08-04 21:00:26 +01:00
Luke Benstead
db0d39d487 Cleanup lighting code a bit 2018-08-04 19:34:07 +01:00
Luke Benstead
59002546e6 Fix lighting 2018-08-03 14:08:01 +01:00
Luke Benstead
0bf023b8df Fix a bug where headers weren't sent to a list 2018-08-02 19:56:50 +01:00
Luke Benstead
9371a8164f Don't send headers unnecessarily 2018-08-01 20:41:59 +01:00
Luke Benstead
4716a6a0c0 Cleanups and optimisations 2018-08-01 17:57:31 +01:00
Luke Benstead
39ac10af00 Simplify colour handling 2018-08-01 12:00:56 +01:00
Luke Benstead
bebca59796 Allow toggling z clipping 2018-08-01 11:32:07 +01:00
Luke Benstead
31e666c77a Implement support for GL_UNSIGNED_INT indices 2018-08-01 11:08:51 +01:00
Luke Benstead
47d3c0f478 Minor optimisations 2018-08-01 09:57:44 +01:00
Luke Benstead
02b4b2d438 Fix clipping errors when multiple strips submitted 2018-07-31 09:32:55 +01:00
Luke Benstead
720206810d Use a smaller near plane value (for now) 2018-07-16 09:01:11 +01:00
Luke Benstead
60c49f708e Clip using the w coordinate 2018-07-16 08:42:15 +01:00
Luke Benstead
0d921c3504 Tweaks to clipping 2018-07-15 21:27:15 +01:00
Luke Benstead
8ef63c75af 'Fix' compiling on platforms other than the DC 2018-07-15 20:44:43 +01:00
Luke Benstead
cdef5972f5 Fix bug when clipping triangle strips 2018-07-15 19:48:56 +01:00
Luke Benstead
81b52e7a18 Finish initial pass at a zclipping implementation 2018-07-14 21:54:43 +01:00
Luke Benstead
2067115385 Handle multiple triangle strips with single-vertices behind the plane 2018-07-10 20:27:15 +01:00
Luke Benstead
5387734e6c Implement z clipping for the single-vertex case 2018-07-10 19:48:25 +01:00
Luke Benstead
e90b5e424a Fix up triangle strip rendering 2018-07-09 19:00:50 +01:00
Luke Benstead
ae335eeff1 Large refactor of vertex submission
This should be much faster as matrix loading is now minimized. Also splits transform from perspective divisionn
to lay the groundwork for near-z clipping. This also fixes GL_POLYGON submission.

Lighting can be made faster, this doesn't change the lighting algorithm, but the matrix changes should speed things up.
2018-07-09 08:57:01 +01:00
Luke Benstead
e70922ebb7 Fix various problems with the lighting calculations 2018-06-06 21:23:17 +01:00
Luke Benstead
4a154d9c4e Add a near-z line clipping function in preparation for implementing near-z clipping 2018-05-31 09:38:34 +01:00
Luke Benstead
9167869633 Add gluOrtho2D, ortho2d example and fix glOrtho 2018-05-29 19:39:27 +01:00
Luke Benstead
101f260ce6 Add nehe06 2018-05-29 17:18:01 +01:00
Luke Benstead
a8d5d2f506 Add NeHe lesson 3, and a Vertex Array version of lesson 2 2018-05-29 17:02:57 +01:00
Luke Benstead
b6b1591010 Add the first nehe sample and make it work 2018-05-29 13:12:38 +01:00
Luke Benstead
0e48a3824b Fix Accumlation buffer error in lxdream 2018-05-28 08:52:35 +01:00
Luke Benstead
a08ce4a06c Fix crash if glTexParameter was called when no texture bound 2018-05-28 07:16:40 +01:00
Luke Benstead
c363a37e30 Fix the containers to compile on C89 and C99 2018-05-26 19:17:42 +01:00
Luke Benstead
51d02ae489 Stub out some of the ARB_framebuffer_object extension 2018-05-20 21:29:04 +01:00
Luke Benstead
f3339e1868 Implement gen/delete/bind framebuffers 2018-05-20 16:44:16 +01:00
Luke Benstead
8a4e53a9c7 Fix fog enable/disable 2018-05-20 16:37:45 +01:00
Luke Benstead
396ea82856 Drop all of the old libGL files 2018-05-20 16:16:53 +01:00
Luke Benstead
1421736733 Remove another old file 2018-05-19 13:43:22 +01:00
Luke Benstead
23e564269b Fix lighting bugs 2018-05-19 09:17:24 +01:00
Luke Benstead
2d9c439490 Implement normal matrix calculation 2018-05-16 21:30:11 +01:00
Luke Benstead
f9cdefcd81 Replace the entire matrix stack handling to work towards fixing lighting 2018-05-16 21:00:41 +01:00
Luke Benstead
4218111ab8 Make things C89 friendly 2018-05-14 17:10:53 +01:00
Luke Benstead
de1fb05ac1 Fix bugs in immediate mode 2018-05-14 16:58:58 +01:00
Luke Benstead
4106206562 Implement glMaterialfv 2018-05-13 19:48:55 +01:00
Luke Benstead
2cef0cb25e Implement glLightf 2018-05-13 09:34:44 +01:00
Luke Benstead
ab11a02056 Diffuse should be ignored if lighting is enabled 2018-05-13 09:00:38 +01:00
Luke Benstead
c76338b16f Add glNormalX, remove more dead code 2018-05-12 21:20:26 +01:00
Luke Benstead
97f4e020ad Rename experimental and update the Makefile 2018-05-12 21:06:22 +01:00