Commit Graph

554 Commits

Author SHA1 Message Date
Francois Gouget 9bfbfcbeb4 Assorted spelling, case and grammar fixes. 2006-06-26 13:06:11 +02:00
Stefan Dösinger e18b89aca7 wined3d: Fix single buffering.
Tell gl to draw to the back buffer when a back buffer is used, do not
use the value from gl.
2006-06-26 13:03:56 +02:00
Stefan Dösinger 2a40642804 wined3d: Fix a bad trace. 2006-06-26 13:03:43 +02:00
Stefan Dösinger 2122026713 wined3d: Create vertex buffer objects for D3D vertex buffers. 2006-06-26 13:03:08 +02:00
Stefan Dösinger 232dfc9b3a wined3d: Vertex fixups. 2006-06-26 13:02:36 +02:00
Stefan Dösinger 7d31ab95e4 wined3d: Add support for VBOs to the drawing code. 2006-06-26 13:02:19 +02:00
Stefan Dösinger 495e46197a ddraw/wined3d: IDirectDrawSurface7::SetSurfaceDesc corrections. 2006-06-26 12:38:55 +02:00
Stefan Dösinger 3518747165 wined3d: Pixel format cleanup. 2006-06-21 12:15:50 +02:00
Louis. Lenders 6601e8eefe wined3d: Add an "\n" to a fixme to fix an overflow. 2006-06-21 11:16:15 +02:00
Jason Green e0ccbeb282 wined3d: Bind correct number of samplers for GLSL shaders.
We are only checking against GL_MAX_TEXTURES when binding samplers,
when we should be checking against the maximum number of samplers that
the card supports.  Spotted by H. Verbeet.
2006-06-21 11:16:07 +02:00
Jason Green 0b09ecb291 wined3d: Move D3DSIO_DEF instruction for ARB shaders into arb_program_shader.c. 2006-06-20 11:28:15 +02:00
Jason Green 99c855e6ae wined3d: Fix DEF instructions in GLSL for non-Nvidia platforms.
- NVidia allows "const vec4 = {1.0, 2.0, 3.0, 4.0};", even though
  that's not part of the spec.
- It should be  "const vec4 = vecr4(1.0, 2.0, 3.0, 4.0);"
- This patch fixes this for D3DSIO_DEF and D3DSIO_DEFI.
2006-06-20 11:28:05 +02:00
Jason Green c13f097de3 wined3d: Correct implementation of D3DSIO_LOOP.
I initially misread the specification.  src0.x is the iteration count,
not the max amount for the loop register.  This fixes that.
2006-06-19 11:11:45 +02:00
Jason Green fd83de7129 wined3d: Fix lookup for LOOP register. 2006-06-19 11:11:24 +02:00
Jason Green 9afa540eb5 wined3d: Added correct cast support for gl_FogFragCoord and gl_PointSize output registers. 2006-06-19 11:11:05 +02:00
Jason Green 406ec20459 wined3d: Load boolean and integer constants into the GLSL shader program. 2006-06-19 10:59:58 +02:00
Jason Green f444009bfb wined3d: Implement locally defined boolean and integer constants in GLSL. 2006-06-19 10:59:13 +02:00
Jason Green 34d271bab6 wined3d: Add preliminary support for constant boolean and integer registers in GLSL.
- Separate the declaration phase of the shader string generator into
  the arb and glsl specific files.
- Add declarations and recognition for application-sent constant
  integers and booleans (locally defined ones will follow).
- Standardize capitilization of pixel/vertex specific variable names.
2006-06-19 10:50:14 +02:00
Jason Green 2d8e05f8a1 wined3d: Move constant loading into target-specific files.
- Moves GLSL constant loading code into glsl_shader.c and out of the
  over-populated drawprim.c.
- Creates a new file named arb_program_shader.c which will hold code
  specific to ARB_vertex_program & ARB_fragment_program.
- Remove the constant loading calls from drawprim.c
2006-06-19 10:49:52 +02:00
Jason Green 7f18b4e5fa wined3d: Remove dead vertex shader code. 2006-06-19 10:39:36 +02:00
Paul Vriens edaac6f696 wined3d: GetScissorRect should use zero-based scissorBox (Coverity). 2006-06-16 14:42:36 +02:00
Francois Gouget 9eb81363ad Add trailing '\n's to ok() calls.
Remove spaces before '\n'.
2006-06-16 11:32:42 +02:00
Francois Gouget 11ae0f6386 Assorted spelling fixes. 2006-06-16 11:32:29 +02:00
H. Verbeet 701ce97d65 wined3d: Add and use GL_EXT_fog_coord defines. 2006-06-16 11:29:31 +02:00
Stefan Dösinger 3862f8e3d7 wined3d: Support more than one back buffer. 2006-06-15 16:51:41 +02:00
Stefan Dösinger 5c3c5903a5 wined3d: Correct vertex fog for transformed vertices and correctly
handle non-vertex, non-table fog.
2006-06-15 12:24:09 +02:00
Jason Green cc06ed3d53 wined3d: Implement more GLSL instructions.
- Implemented: D3DSIO_SGN, LOOP, ENDLOOP, LOGP, LIT, DST, SINCOS
- Process instruction-based modifiers (function existed, it just
  wasn't being called)
- Add loop checking to register maps.
- Renamed "sng" to "sgn" for D3DSIO_SGN - it's not handled anywhere
  except for GLSL, so won't matter.
2006-06-15 12:20:20 +02:00
Alexandre Julliard 836b5c7e93 wined3d: Use unsigned int instead of size_t to avoid printf format warnings. 2006-06-13 14:14:20 +02:00
Ivan Gyurdiev 45dbb78d73 wined3d: Fix params for DP2ADD/TEXLDD.
DP2ADD is valid on pshaders 2.0 and above, has 4 parameters.
TEXLDD is valid on pshaders 2.x and above, has 5 parameters.
2006-06-13 11:40:23 +02:00
Ivan Gyurdiev 8c6ee8df0d wined3d: Mark instructions without a destination token.
There are a total of 17 instructions without a destination token. Of
those 9 have num_params != 0, which means that we will not process any
of them correctly, because we assume the first token (if present) is a
destination token.

Those are basically all the flow control instructions, which we plan to
support very soon. They have source tokens, and no destination. Add a
flag that marks them up to the ins table. Use this flag in the trace
pass, and generation pass.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 14a52e5c09 wined3d: Keep pshader and vshader constants in GLSL separate.
GLSL uniforms have as scope the entire program.
To prevent conflicts, name pshader and vshader constants differently.
Based on a patch by Jason Green.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 0d08316523 wined3d: Improve Sampler support on 2.0 and 3.0 shaders.
- track sampler declarations and store the sampler usage in reg_maps structure
- store a fake sampler usage for 1.X shaders (defined as 2D sampler)
- re-sync glsl TEX implementation with the ARB one (no idea why they diverged..)
- use sampler type in new TEX implementation to support 2D, 3D, and Cube sampling
- change drawprim to bind pixel shader samplers

Additional improvements:
- rename texture limit to texcoord to prevent confusion
- add sampler limit, and use that for samplers - *not* the same as texcoord above
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev e99926ee06 wined3d: Cast more things.
Anything with a swizzle has to be casted to vec4, or it won't work properly.
There's multiple ways to do this, for the moment pick the easiest one.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev a1f4dfe4e3 wined3d: Add support for shader model 3.0 I/O registers.
SM 3.0 can pack multiple "semantics" into 12 generic input/output registers.

To support that, define temporaries called IN and OUT, and use those as
the output registers. At the end of the vshader, unpack the OUT temps
into the proper GL variables. At the beginning of the pshader, pack the
GL variables back into 12 IN registers.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 1a3003338f wined3d: Trivial cleanups
- compiler warnings and errors should be FIXME
- remove obsolete comment, and change variable type.
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev a42925ee09 wined3d: Register map cleanups.
Various cleanups:
- do not use DWORD as a bitmask, that places artificial limit of 32 on
  registers
- track attributes that are used and declare only those
- move declarations function call in pshader/vshader to allow us to
  insert pixel or vertex specific code between the declarations and
  the rest of the code
- remove redundant 0 intializers
- remove useless continue statement
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 17b0d26c1e wined3d: Share trace pass
Now that the declaration function is out of the way, the tracing pass,
which is very long and 100% the same can be shared between pixel and
vertex shaders.

The new function is called shader_trace_init(), and is responsible for:
- tracing the shader
- initializing the function length
- setting the shader version [needed very early]
2006-06-13 11:40:22 +02:00
Ivan Gyurdiev 9bae7755ab wined3d: Rework dcl processing.
The new function is called in pass 2 (getister counting/maps), and
it's now in baseshader. It operates on all INPUT and OUTPUT registers,
which, in addition to the old vertex shader input declarations covers
Shader Model 3.0 vshader output and pshader input declarations. The
result is stored into the reg_map structure.
2006-06-13 11:40:21 +02:00
Ivan Gyurdiev f144d58ac2 wined3d: The namedArrays code path is dead (always FALSE).
Delete the entire namedArrays code path and all its dependencies (one
of which is quite long - storeOrder in drawprim is always FALSE, for
example). Delete declaredArrays, and make its code path the default.
2006-06-13 11:40:21 +02:00
Jan Zerebecki c6449b5a91 wined3d: Move a checkGLcall to it's gl call inside an "if". 2006-06-13 10:51:07 +02:00
Jan Zerebecki 7528fc0de1 wined3d: Fix stencil related render states. 2006-06-13 10:50:55 +02:00
Jan Zerebecki cf8833c467 wined3d: Enable two sided stencil in the caps. 2006-06-13 10:46:29 +02:00
Jan Zerebecki df3e078b20 wined3d: Also print the format like a fourcc if unknown in debug_d3dformat. 2006-06-13 10:35:14 +02:00
H. Verbeet 405e11ea62 wined3d: Cleanup GetSrcAndOpFromValue().
- Cleanup GetSrcAndOpFromValue().
- Use naming more consistent with the rest of the file.
2006-06-12 16:07:58 +02:00
Jason Green d822496dee wined3d: Map D3DSIO_DEF to it's GLSL generating function for vertex shaders. 2006-06-12 13:21:46 +02:00
Alexandre Julliard dbfb3739aa wined3d: Make all the local shader functions static. 2006-06-10 13:22:27 +02:00
Alexandre Julliard e9cbc66e93 wined3d: Make the virtual table functions static where possible. 2006-06-10 13:15:32 +02:00
Jason Green 42dd4653e3 wined3d: Change fog output variable name for GLSL shaders. 2006-06-10 12:43:10 +02:00
Jason Green e8c97e9421 wined3d: Fix regression from register maps switch for ARB shaders.
I missed a register mask in the move to share the shader_hw_def()
function between pixel and vertex shaders for ARB shaders.  Fixed
that, and made the GLSL version use the same mask for consistency.
2006-06-10 12:43:02 +02:00
Ivan Gyurdiev a09c941677 wined3d: Enable CND/CMP for SHADER_ARB. 2006-06-10 12:42:09 +02:00