Commit Graph

84 Commits

Author SHA1 Message Date
Jason Green ca7976c34f wined3d: Map vertex shader instructions to GLSL generating functions. 2006-06-09 15:19:09 +02:00
Jason Green ca70d13af4 wined3d: Unified float constant register mapping between ARB pixel and vertex shaders.
- Got rid of the separate constant maps.
- Side effect of this is that the map is a bit larger for pixel shaders than it needs to be
2006-06-09 14:36:50 +02:00
Ivan Gyurdiev 0909df6711 wined3d: Rename vertex shader constants.
From const%lu to C%lu for consistency (to match pshaders).
2006-06-06 11:50:36 +02:00
Ivan Gyurdiev aec2e3e46d wined3d: Trace improvements. 2006-06-06 11:49:03 +02:00
Jason Green 473ce80fa2 wined3d: Add ability to generate GLSL shader objects for vertex and pixel shaders. 2006-05-27 11:01:05 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Ivan Gyurdiev 438d88e1e8 wined3d: Only run parse_decl_usage on vshader INPUT registers. 2006-05-22 11:38:55 +02:00
Jason Green 683e5bfc55 wined3d: Move PARAM C[] program.env[] into baseshader and out of vertex shaders. 2006-05-20 17:37:48 +02:00
Ivan Gyurdiev 42b89791ff wined3d: Take predication tokens into account.
Each instruction can have a predication token. Account for it in the
trace pass, register count pass, and store it in the SHADER_OPCODE_ARG
structure for generation. MSDN claims the token is at the end of the
instruction, but that's not true - testing a demo, which lets me
manipulate the shader shows the predication token is the first source
token immediately following the destination token.
2006-05-18 10:32:54 +02:00
Ivan Gyurdiev 3d905baf50 wined3d: SETP takes 3 parameters. 2006-05-18 10:32:08 +02:00
Ivan Gyurdiev 174734e4a2 wined3d: LRP is not a valid ARBvp code. 2006-05-17 10:56:01 +02:00
Ivan Gyurdiev c05bc5d9c1 wined3d: Write "unrecognized_register" in fallback case for get_register_name(). 2006-05-17 10:55:39 +02:00
Ivan Gyurdiev 746d1b1cd3 wined3d: Modify shader_dump_param() to take into account address token.
Currently we hardcode a0.x, which I think is correct for shaders 1.0.
However, for shaders 2.0, we must look into the address token, and
print the register there. Handle both cases to correct the trace.
2006-05-17 10:55:11 +02:00
Ivan Gyurdiev 03b67e3030 wined3d: Use shader_get_param() in trace pass, reg. count pass, generation pass.
Change the trace pass, the register counting pass, and the hw
generator pass to take into account the new get_params() function. For
hw generation, store the address tokens into the SHADER_OPCODE_ARG
structure, so they're available to generator functions.
2006-05-17 10:54:23 +02:00
Ivan Gyurdiev 404eff792f wined3d: Add shader_get_param() fn, which processes address tokens.
Add a new function to process parameters.
On shaders 1.0, processing parameters amounts to *pToken++.
On shaders 2.0+, we have a relative addressing token to account for.
This function should be used, instead of relying on num_params everywhere.
2006-05-17 10:53:18 +02:00
Ivan Gyurdiev c94ecdff61 wined3d: Fix SINCOS parameters.
SINCOS has 4 parameters in shaders 2.0.
It has 2 parameters in shaders 3.0.
It's undefined in shaders 1.0.
2006-05-17 10:50:33 +02:00
Ivan Gyurdiev 6b5d076394 wined3d: DEFI takes 5 parameters.
According the spec and the Painkiller log, DEFI has 5 parameters on
vertex shaders.
2006-05-17 10:50:10 +02:00
Paul Vriens ba438d4f5d wined3d: Correctly define the number of possible parameters. 2006-05-16 12:53:28 +02:00
Ivan Gyurdiev 8b7401c39a wined3d: Shaders: share dump_param function, version functions. 2006-05-15 16:07:31 +02:00
Ivan Gyurdiev c61af3af8d wined3d: Share shader_dump_ins_modifiers().
Share shader_dump_ins_modifiers(), and make vertex shaders use it.
The saturate modifer (_sat) is valid on vs_3_0+, and it isn't being
shown in the trace.
2006-05-11 12:10:59 +02:00
Jason Green 246677ae46 wined3d: Modified the opcode tables (and struct) to include a pointer to a GLSL generator function. 2006-05-10 12:20:08 +02:00
Jason Green 604579ed62 wined3d: Use new GenerateShader function for vertex shaders. 2006-05-10 12:19:01 +02:00
Jason Green 36b0b9cc1c wined3d: Added new GenerateShader function for Vertex Shaders & declare generate_base_shader(). 2006-05-10 12:18:08 +02:00
Jason Green c15447d4b0 wined3d: Rename the TEMP variables in vertexshader.c to R from T for consistency. 2006-05-10 12:17:01 +02:00
Jason Green cc2ea9e08c wined3d: Place # of textures, addresses, & temps used inside the baseShader struct to prepare for GenerateShader merge. 2006-05-10 12:16:22 +02:00
Jason Green 653e71d774 wined3d: Further split up GenerateProgramArbHW for pixelshaders. 2006-05-10 12:16:02 +02:00
Jason Green f015124ae0 wined3d: Move D3DSIO_M#x# vertex shader opcodes to a more standard function. 2006-05-10 12:15:35 +02:00
Jason Green eee6fc9277 wined3d: Move DCL, DEF operations out of Generate loop and into separate functions. 2006-05-10 12:15:12 +02:00
Jason Green 5308e026d1 wined3d: Move program_dump_decl_usage into baseshader. 2006-05-10 12:14:39 +02:00
Ivan Gyurdiev 9d4960bfcb wined3d: Clean up some dead code. 2006-05-10 11:29:44 +02:00
Ivan Gyurdiev cdfe848b6d wined3d: Break out arithmetic instruction processing. 2006-05-10 11:28:11 +02:00
Ivan Gyurdiev 320e33dcb3 wined3d: Merge register counting pass. 2006-05-10 11:26:01 +02:00
Ivan Gyurdiev aadafd64da wined3d: Make register counting pass the same. 2006-05-10 11:24:33 +02:00
Ivan Gyurdiev 1d0c672393 wined3d: Share get_opcode. 2006-05-09 20:45:10 +02:00
Ivan Gyurdiev c93239d36d wined3d: Clean up per version shader limits code. 2006-05-09 11:58:14 +02:00
Ivan Gyurdiev 5f10560762 wined3d: Addline cleanup. 2006-05-09 11:55:45 +02:00
Jason Green 66ab457196 wined3d: Eliminate duplicate function: vshader_program_dump_param(). 2006-05-08 15:19:12 +02:00
Ivan Gyurdiev 4b3079438b wined3d: Share get_register_code(). 2006-05-08 15:15:30 +02:00
Ivan Gyurdiev aea0b5d0f8 wined3d: Separate pshader/vshader tables. 2006-05-08 13:36:31 +02:00
Ivan Gyurdiev 07f4f70487 wined3d: QueryInterface corrections. 2006-05-05 20:23:41 +02:00
Roderick Colenbrander c4eff1eb44 wined3d: Vertex Shader regtype cleanups. 2006-05-05 18:01:09 +02:00
Ivan Gyurdiev 63ef9788dd wined3d: Trace corrections/improvements. 2006-04-20 15:38:00 +02:00
Ivan Gyurdiev 3dddaae795 wined3d: Use ARB[f|v]p1.0 for ps2/ps3/vs3. 2006-04-18 11:22:48 +02:00
Ivan Gyurdiev e3c8e65084 wined3d: Use correct register number mask.
The regmask currently being used is wrong - 0x1FFF includes the high
two bits of the register type.
2006-04-18 11:20:45 +02:00
Ivan Gyurdiev e0a1442f6c wined3d: Dcl opcode takes 2 parameters. 2006-04-18 11:19:48 +02:00
Ivan Gyurdiev d3d56e765d wined3d: Fix flow control instructions number of parameters.
- else, endif, break take 0 parameters [not 2]
- if, rep take 1 parameter [not 2]
- breakp takes 1 parameter [not 2]
- move all flow control instructions in one place
- sync software shaders signatures with this
2006-04-18 11:18:48 +02:00
Ivan Gyurdiev 0d6eaf363d wined3d: Skip unhandled opcodes in vshaders. 2006-04-18 11:17:34 +02:00
Ivan Gyurdiev 8ab0237e21 wined3d: Reorganize shaders code a bit. 2006-04-12 11:42:04 +02:00
Ivan Gyurdiev 88a7c9e948 wined3d: Downgrade some FIXMEs. 2006-04-10 12:23:45 +02:00
Stefan Dösinger 9d67b4287e wined3d: Rename return values from D3D* to WINED3D*. 2006-04-07 14:54:04 +02:00