Sat, 14 Apr 2012 23:45:34 -0400 Note whether a given register was written to by the shader.
Ryan C. Gordon <icculus@icculus.org> [Sat, 14 Apr 2012 23:45:34 -0400] rev 1083
Note whether a given register was written to by the shader.
Sat, 14 Apr 2012 23:23:25 -0400 Added some FIXMEs.
Ryan C. Gordon <icculus@icculus.org> [Sat, 14 Apr 2012 23:23:25 -0400] rev 1082
Added some FIXMEs.
Sat, 14 Apr 2012 17:14:50 -0400 Pixel Shader Model 1 writes color output to r0, not oC0. Deal with this.
Ryan C. Gordon <icculus@icculus.org> [Sat, 14 Apr 2012 17:14:50 -0400] rev 1081
Pixel Shader Model 1 writes color output to r0, not oC0. Deal with this.
Fri, 13 Apr 2012 16:10:48 -0400 M4X4 opcode can actually overflow some string buffers.
Ryan C. Gordon <icculus@icculus.org> [Fri, 13 Apr 2012 16:10:48 -0400] rev 1080
M4X4 opcode can actually overflow some string buffers.
Fri, 13 Apr 2012 02:13:47 -0400 Fixed the GLSL LIT opcode.
Ryan C. Gordon <icculus@icculus.org> [Fri, 13 Apr 2012 02:13:47 -0400] rev 1079
Fixed the GLSL LIT opcode. Clearly we never pushed this through a GLSL compiler before. :)
Fri, 13 Apr 2012 00:26:21 -0400 ARB1 profile: implemented matrix multiply opcodes.
Ryan C. Gordon <icculus@icculus.org> [Fri, 13 Apr 2012 00:26:21 -0400] rev 1078
ARB1 profile: implemented matrix multiply opcodes. Specifically: M4X4, M4X3, M3X4, M3X3, M3X2.
Fri, 13 Apr 2012 00:24:21 -0400 Cleaned up some cut-and-paste.
Ryan C. Gordon <icculus@icculus.org> [Fri, 13 Apr 2012 00:24:21 -0400] rev 1077
Cleaned up some cut-and-paste.
Fri, 13 Apr 2012 00:24:04 -0400 Removed some FIXMEs...I think this code is right as-is.
Ryan C. Gordon <icculus@icculus.org> [Fri, 13 Apr 2012 00:24:04 -0400] rev 1076
Removed some FIXMEs...I think this code is right as-is.
Thu, 12 Apr 2012 23:13:16 -0400 Flag more registers as scalar. Fixes use of dcl_fog, oPts and oFog registers.
Ryan C. Gordon <icculus@icculus.org> [Thu, 12 Apr 2012 23:13:16 -0400] rev 1075
Flag more registers as scalar. Fixes use of dcl_fog, oPts and oFog registers.
Wed, 04 Jan 2012 13:07:50 -0800 Corrected scalar opcode behavior in the preshader virtual machine.
Ryan C. Gordon <icculus@icculus.org> [Wed, 04 Jan 2012 13:07:50 -0800] rev 1074
Corrected scalar opcode behavior in the preshader virtual machine.
Wed, 21 Dec 2011 04:10:58 -0500 Cleaned up half-float stuff.
Ryan C. Gordon <icculus@icculus.org> [Wed, 21 Dec 2011 04:10:58 -0500] rev 1073
Cleaned up half-float stuff.
Wed, 21 Dec 2011 04:10:42 -0500 Fixed up calling GL2 vs ARB extension entry points.
Ryan C. Gordon <icculus@icculus.org> [Wed, 21 Dec 2011 04:10:42 -0500] rev 1072
Fixed up calling GL2 vs ARB extension entry points. Should fix Super Meat Boy (etc) on Mesa-based Linux OpenGL drivers.
Wed, 21 Dec 2011 02:41:48 -0500 We never actually use glGetProgramStringARB().
Ryan C. Gordon <icculus@icculus.org> [Wed, 21 Dec 2011 02:41:48 -0500] rev 1071
We never actually use glGetProgramStringARB().
Wed, 21 Dec 2011 02:19:10 -0500 Reworked GLSL extension and version detection.
Ryan C. Gordon <icculus@icculus.org> [Wed, 21 Dec 2011 02:19:10 -0500] rev 1070
Reworked GLSL extension and version detection. Also disabled forcibly declaring GLSL available if the GL version is >= 2.0, because the ARB extensions use different entry points than the core version. Silly mistake.
Mon, 28 Nov 2011 07:41:31 -0500 Extremely minor tweak.
Ryan C. Gordon <icculus@icculus.org> [Mon, 28 Nov 2011 07:41:31 -0500] rev 1069
Extremely minor tweak.
Tue, 15 Nov 2011 12:30:17 -0500 Documented MOJOSHADER_glBindShaders().
Ryan C. Gordon <icculus@icculus.org> [Tue, 15 Nov 2011 12:30:17 -0500] rev 1068
Documented MOJOSHADER_glBindShaders().
Fri, 11 Nov 2011 03:15:36 -0500 Forgot a piece with SUPPORT_PRESHADERS preprocessor test.
Ryan C. Gordon <icculus@icculus.org> [Fri, 11 Nov 2011 03:15:36 -0500] rev 1067
Forgot a piece with SUPPORT_PRESHADERS preprocessor test.
Fri, 11 Nov 2011 02:20:36 -0500 Added MOJOSHADER_glBindShaders().
Ryan C. Gordon <icculus@icculus.org> [Fri, 11 Nov 2011 02:20:36 -0500] rev 1066
Added MOJOSHADER_glBindShaders().
Fri, 11 Nov 2011 02:20:05 -0500 Implemented hash_iter_keys().
Ryan C. Gordon <icculus@icculus.org> [Fri, 11 Nov 2011 02:20:05 -0500] rev 1065
Implemented hash_iter_keys().
Fri, 11 Nov 2011 02:19:48 -0500 Minor hash_iter() code cleanup.
Ryan C. Gordon <icculus@icculus.org> [Fri, 11 Nov 2011 02:19:48 -0500] rev 1064
Minor hash_iter() code cleanup.
Tue, 25 Oct 2011 12:01:34 -0400 Several preshader fixes and static analysis tweaks.
Ryan C. Gordon <icculus@icculus.org> [Tue, 25 Oct 2011 12:01:34 -0400] rev 1063
Several preshader fixes and static analysis tweaks.
Tue, 25 Oct 2011 02:24:45 -0400 Fixed use of wrong variable in setting preshader temp register counts.
Ryan C. Gordon <icculus@icculus.org> [Tue, 25 Oct 2011 02:24:45 -0400] rev 1062
Fixed use of wrong variable in setting preshader temp register counts.
Mon, 24 Oct 2011 15:03:43 -0400 Set relative_component correctly when parsing source registers.
Ryan C. Gordon <icculus@icculus.org> [Mon, 24 Oct 2011 15:03:43 -0400] rev 1061
Set relative_component correctly when parsing source registers. Fixes address a0.(y|z|w) from unconditionally becoming a0.x ...
Thu, 20 Oct 2011 17:50:27 -0400 Fixed a few things clang's static analysis reported.
Ryan C. Gordon <icculus@icculus.org> [Thu, 20 Oct 2011 17:50:27 -0400] rev 1060
Fixed a few things clang's static analysis reported.
Thu, 20 Oct 2011 12:08:12 -0400 Fixed must-copy version of stringmap_insert().
Ryan C. Gordon <icculus@icculus.org> [Thu, 20 Oct 2011 12:08:12 -0400] rev 1059
Fixed must-copy version of stringmap_insert(). Thanks to Sam Lantinga for pointing out the bug.
Mon, 01 Aug 2011 15:14:50 -0400 Let d3d and bytecode profiles use relative addressing without a CTAB.
Ryan C. Gordon <icculus@icculus.org> [Mon, 01 Aug 2011 15:14:50 -0400] rev 1058
Let d3d and bytecode profiles use relative addressing without a CTAB. Since these would work on Windows without them, too.
Mon, 01 Aug 2011 15:06:52 -0400 Assembler: fixed bug where relative addressing failed parsing.
Ryan C. Gordon <icculus@icculus.org> [Mon, 01 Aug 2011 15:06:52 -0400] rev 1057
Assembler: fixed bug where relative addressing failed parsing.
Mon, 20 Jun 2011 15:56:22 -0400 Toggle pointsize support as necessary in the OpenGL bindings.
Ryan C. Gordon <icculus@icculus.org> [Mon, 20 Jun 2011 15:56:22 -0400] rev 1056
Toggle pointsize support as necessary in the OpenGL bindings.
Mon, 20 Jun 2011 15:47:16 -0400 Report shader outputs in MOJOSHADER_parseData.
Ryan C. Gordon <icculus@icculus.org> [Mon, 20 Jun 2011 15:47:16 -0400] rev 1055
Report shader outputs in MOJOSHADER_parseData.
Mon, 20 Jun 2011 15:26:34 -0400 Treat dcl_psize registers as scalar.
Ryan C. Gordon <icculus@icculus.org> [Mon, 20 Jun 2011 15:26:34 -0400] rev 1054
Treat dcl_psize registers as scalar.
Thu, 09 Jun 2011 01:59:49 -0400 Maybe fix scalar operations in preshader interpreter.
Ryan C. Gordon <icculus@icculus.org> [Thu, 09 Jun 2011 01:59:49 -0400] rev 1053
Maybe fix scalar operations in preshader interpreter.
Thu, 09 Jun 2011 01:56:10 -0400 Don't allocate zero bytes for MOJOSHADER_symbolTypeInfo::members.
Ryan C. Gordon <icculus@icculus.org> [Thu, 09 Jun 2011 01:56:10 -0400] rev 1052
Don't allocate zero bytes for MOJOSHADER_symbolTypeInfo::members.
Thu, 02 Jun 2011 14:49:30 -0400 Fixed off-by-one error in testparse.
Ryan C. Gordon <icculus@icculus.org> [Thu, 02 Jun 2011 14:49:30 -0400] rev 1051
Fixed off-by-one error in testparse.
Thu, 02 Jun 2011 03:17:18 -0400 Fixed temp count in preshaders.
Ryan C. Gordon <icculus@icculus.org> [Thu, 02 Jun 2011 03:17:18 -0400] rev 1050
Fixed temp count in preshaders.
Thu, 02 Jun 2011 00:51:50 -0400 ARB1: Use OPTION ARB_position_invariant if we didn't write to result.position.
Ryan C. Gordon <icculus@icculus.org> [Thu, 02 Jun 2011 00:51:50 -0400] rev 1049
ARB1: Use OPTION ARB_position_invariant if we didn't write to result.position.
Thu, 02 Jun 2011 00:47:17 -0400 ARB1, GLSL: Deal with multiple draw buffers (registers oC1, etc).
Ryan C. Gordon <icculus@icculus.org> [Thu, 02 Jun 2011 00:47:17 -0400] rev 1048
ARB1, GLSL: Deal with multiple draw buffers (registers oC1, etc).
Wed, 01 Jun 2011 13:22:55 -0400 Don't try to allocate a temp array if the preshader has no temps.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 13:22:55 -0400] rev 1047
Don't try to allocate a temp array if the preshader has no temps.
Wed, 01 Jun 2011 13:22:21 -0400 Place preshader destination register last in operand list.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 13:22:21 -0400] rev 1046
Place preshader destination register last in operand list. This is where it's located in the shader, and it simplies some things.
Wed, 01 Jun 2011 05:35:50 -0400 Fixed wrong array offset in preshader interpreter.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 05:35:50 -0400] rev 1045
Fixed wrong array offset in preshader interpreter. (dst operand is first, skip it when loading src operands.)
Wed, 01 Jun 2011 03:30:03 -0400 Report preshader symbol table in testparse.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 03:30:03 -0400] rev 1044
Report preshader symbol table in testparse.
Wed, 01 Jun 2011 02:15:29 -0400 Preshader input registers are separate from the actual shader constant file!
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 02:15:29 -0400] rev 1043
Preshader input registers are separate from the actual shader constant file! So make the effort to manage yet-another set of arrays for these registers...
Wed, 01 Jun 2011 02:14:12 -0400 Export symbol information for preshaders.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 02:14:12 -0400] rev 1042
Export symbol information for preshaders.
Wed, 01 Jun 2011 02:11:57 -0400 Fixed compiler warnings.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 02:11:57 -0400] rev 1041
Fixed compiler warnings.
Wed, 01 Jun 2011 01:16:12 -0400 Added functions to query the register files.
Ryan C. Gordon <icculus@icculus.org> [Wed, 01 Jun 2011 01:16:12 -0400] rev 1040
Added functions to query the register files.
Tue, 31 May 2011 16:25:37 -0400 Run preshaders during MOJOSHADER_glProgramReady().
Ryan C. Gordon <icculus@icculus.org> [Tue, 31 May 2011 16:25:37 -0400] rev 1039
Run preshaders during MOJOSHADER_glProgramReady().
Tue, 31 May 2011 16:25:00 -0400 Allow preshader support to be #ifdef'd out, to reduce binary size.
Ryan C. Gordon <icculus@icculus.org> [Tue, 31 May 2011 16:25:00 -0400] rev 1038
Allow preshader support to be #ifdef'd out, to reduce binary size.
Tue, 31 May 2011 16:01:10 -0400 Filled in and fixed some stuff in the Effect parser.
Ryan C. Gordon <icculus@icculus.org> [Tue, 31 May 2011 16:01:10 -0400] rev 1037
Filled in and fixed some stuff in the Effect parser. This code is all nasty, because I'm planning to rewrite it later.
Tue, 31 May 2011 03:23:39 -0400 First shot at preshader interpreter. Completely untested!
Ryan C. Gordon <icculus@icculus.org> [Tue, 31 May 2011 03:23:39 -0400] rev 1036
First shot at preshader interpreter. Completely untested!
Tue, 31 May 2011 01:09:12 -0400 Changed CMPLT and CMPGE to LT and GE, to match what fxc spits out.
Ryan C. Gordon <icculus@icculus.org> [Tue, 31 May 2011 01:09:12 -0400] rev 1035
Changed CMPLT and CMPGE to LT and GE, to match what fxc spits out.
Tue, 31 May 2011 00:56:00 -0400 Found, I think, the final preshader opcodes.
Ryan C. Gordon <icculus@icculus.org> [Tue, 31 May 2011 00:56:00 -0400] rev 1034
Found, I think, the final preshader opcodes. I wrote a goofy program to edit a file, run it through fxc.exe /dumpbin, and diff the results to automate the search. #include <stdio.h> #include <stdlib.h> #define FNAME "test.fxc" #define OFFSET 7804 #define STARTVAL 0xA000 int main(void) { system("./fxc.exe /nologo /Tfx_2_0 /dumpbin " FNAME " >dump.txt"); int i = STARTVAL; for (i = STARTVAL; i < STARTVAL+0x100; i += 0x10) { FILE *io = fopen(FNAME, "r+b"); if (io == NULL) return 1; fseek(io, OFFSET, SEEK_SET); const unsigned short y = 0x0001; fwrite(&y, sizeof (y), 1, io); const unsigned short x = (unsigned short) i; fwrite(&x, sizeof (x), 1, io); fflush(io); fclose(io); system("./fxc.exe /nologo /Tfx_2_0 /dumpbin " FNAME " >dump2.txt"); fprintf(stderr, "0x%X ... \n", i); system("diff -u dump.txt dump2.txt 1>&2"); } return 0; }
Mon, 30 May 2011 23:39:12 -0400 Added DIV preshader opcode.
Ryan C. Gordon <icculus@icculus.org> [Mon, 30 May 2011 23:39:12 -0400] rev 1033
Added DIV preshader opcode. After poking around with a hex editor and fxc.exe /dumpbin, I _think_ this is everything from the 0x1000, 0x2000, and 0xA000 blocks. There might be some 0x3000 or 0x5000 opcodes out there still.
Mon, 30 May 2011 19:56:41 -0400 Added some more preshader opcodes, cleaned up opcode handling elsewhere.
Ryan C. Gordon <icculus@icculus.org> [Mon, 30 May 2011 19:56:41 -0400] rev 1032
Added some more preshader opcodes, cleaned up opcode handling elsewhere.
Mon, 30 May 2011 19:34:03 -0400 Put preshader opcode switch in numeric order. Makes missing values obvious.
Ryan C. Gordon <icculus@icculus.org> [Mon, 30 May 2011 19:34:03 -0400] rev 1031
Put preshader opcode switch in numeric order. Makes missing values obvious.
Mon, 30 May 2011 16:41:22 -0400 Initial work on preshader support.
Ryan C. Gordon <icculus@icculus.org> [Mon, 30 May 2011 16:41:22 -0400] rev 1030
Initial work on preshader support. Parses and outputs in testparse. Some gaps in the reverse engineering still, and probably some bugs still, too. Doesn't actually USE the preshaders yet, but now the data is available to us.
Sun, 29 May 2011 17:48:30 -0400 Moved some logic around in parsing CTABs.
Ryan C. Gordon <icculus@icculus.org> [Sun, 29 May 2011 17:48:30 -0400] rev 1029
Moved some logic around in parsing CTABs.
Sun, 29 May 2011 17:34:12 -0400 Parse symbols in the CTAB, export them in MOJOSHADER_parseData.
Ryan C. Gordon <icculus@icculus.org> [Sun, 29 May 2011 17:34:12 -0400] rev 1028
Parse symbols in the CTAB, export them in MOJOSHADER_parseData.
Sun, 29 May 2011 11:58:40 -0400 Recover slightly better from unrecognized instruction tokens.
Ryan C. Gordon <icculus@icculus.org> [Sun, 29 May 2011 11:58:40 -0400] rev 1027
Recover slightly better from unrecognized instruction tokens.
Tue, 24 May 2011 23:24:15 -0400 GLSL: texldd-specific arguments need to be cast to vec2.
Ryan C. Gordon <icculus@icculus.org> [Tue, 24 May 2011 23:24:15 -0400] rev 1026
GLSL: texldd-specific arguments need to be cast to vec2.
Tue, 24 May 2011 23:15:50 -0400 Favor GL_ARB_shader_texture_lod over GL_EXT_gpu_shader4.
Ryan C. Gordon <icculus@icculus.org> [Tue, 24 May 2011 23:15:50 -0400] rev 1025
Favor GL_ARB_shader_texture_lod over GL_EXT_gpu_shader4. One enables just the piece of functionality we care about for TEXLDD, the other enables a whole kitchen sink.
Tue, 24 May 2011 04:38:48 -0400 Test for the GL extension, not whether the entry point is NULL.
Ryan C. Gordon <icculus@icculus.org> [Tue, 24 May 2011 04:38:48 -0400] rev 1024
Test for the GL extension, not whether the entry point is NULL. (glXGetProcAddress() can legally return a non-NULL pointer...you have to make sure it is safe to call yourself by checking the GL_EXTENSIONS string!)
(0) -1000 -300 -100 -60 +60 +100 tip