Commit Graph

371 Commits

Author SHA1 Message Date
Stefan Dösinger df4dcc34aa wined3d: Move a few extension checks into the state template. 2008-07-17 11:44:28 +02:00
Stefan Dösinger 35f33ef409 wined3d: Add extension information to the states.
This patch adds a new field to the state templates. If this extension
field is != 0, then the line is only applied to the final state table
if the extension is supported. Once a line is applied to the final
table, all further templates for this state from the same pipeline
part are ignored. This allows removing some extension checks from the
state handlers, which cleans them up and saves a few CPU cycles when
applying the states.
2008-07-17 11:44:08 +02:00
H. Verbeet c72c70d609 wined3d: Store the texture in a local variable in sampler_texmatrix().
Slightly improves readability.
2008-07-17 11:36:42 +02:00
Stefan Dösinger e27734779c wined3d: Remove some dead code. 2008-07-14 11:46:33 +02:00
Stefan Dösinger 88ae2fe14a wined3d: Give nv* fixed function stuff its own state template. 2008-07-14 11:46:11 +02:00
Stefan Dösinger 38934fe70d wined3d: Move shader constant affecting states to the misc pipeline.
As long as we have the shader constants in misc, it is best to keep
all the code that affects shader constants, like bumpenvmat setting,
in there as well.
2008-07-14 11:44:48 +02:00
Stefan Dösinger 84d39a95e5 wined3d: WINED3DTSS_TEXCOORDINDEX belongs to the vertex pipeline. 2008-07-14 11:44:36 +02:00
Stefan Dösinger 86b033bbb9 wined3d: Give the nvts/nvrc code its own pipeline implementation.
This code creates the structures and the pipeline selection, as well
as the caps filling. It does not yet move the actual code around,
since this will be a bigger task.
2008-07-14 11:44:26 +02:00
Stefan Dösinger 51e64b3fe9 wined3d: Move fixed function texture dimension updates to the fragment pipeline.
This is a further separation of the sampler state, and a preparation
to move the nv texture shader stuff to its own pipeline implementation.
2008-07-14 11:43:41 +02:00
Stefan Dösinger d3c29b7063 wined3d: NP2 coordinate adjustment is a vertex operation.
When a sampler is changed and unconditional NP2 textures are not
supported, the texture matrix may need adjustment. The sampler state
function checks for that, and calls the texture transform setting
function in that case. However, samplers are a misc state, and the
texture transform flags a vertex state.  Thus split up the code and
move the matrix changes to the vertex side.
2008-07-14 11:43:30 +02:00
Stefan Dösinger e7733eacb7 wined3d: Remove the atifs shader backend.
Since atifs is only doing the fragment pipeline replacement right now
there is no need for the shader backend structure any longer. The ffp
private data is stored in new fragment pipeline private data(which
could potentially be set to equal the shader private data if needed).
2008-07-14 11:43:09 +02:00
Stefan Dösinger e4078fb0ba wined3d: Set ffp caps in the ffp backend, not the shader backend. 2008-07-11 14:32:53 +02:00
Stefan Dösinger c48195e417 wined3d: Move shader_fragment_enable to the fragment pipeline implementation.
It isn't related to the shader backend any longer. The nvts_enable in
the ffp code isn't quite right as well, it should be moved away once
there is a dedicated nvts fragment pipeline replacement
2008-07-11 14:32:37 +02:00
Stefan Dösinger f330815da5 wined3d: Samplers -> misc states. 2008-07-11 14:31:53 +02:00
Stefan Dösinger f8824996e9 Wined3d: Move the last states. 2008-07-11 14:31:44 +02:00
Stefan Dösinger 9b15e25411 wined3d: One more psize state. 2008-07-11 14:31:36 +02:00
Stefan Dösinger 721301fb3f wined3d: Point size vertex states. 2008-07-11 14:31:26 +02:00
Stefan Dösinger 031ee3e695 wined3d: A few more junk misc states. 2008-07-10 12:30:56 +02:00
Stefan Dösinger c31dfc7d0d wined3d: A few more vertex states. 2008-07-10 12:30:56 +02:00
Stefan Dösinger 9086ed2d2e wined3d: WINED3DRS_SRGBWRITEENABLE->fragment. 2008-07-10 12:30:56 +02:00
Stefan Dösinger 0b67a84b44 wined3d: Wrapping states -> misc. 2008-07-10 12:30:56 +02:00
Stefan Dösinger dd95fce9fb wined3d: texturefactor-> fragment states. 2008-07-10 12:30:56 +02:00
Stefan Dösinger 6fa9f0e363 wined3d: Stencil states -> misc table. 2008-07-10 12:30:56 +02:00
Stefan Dösinger de1b0a5c04 wined3d: Move a few more odd states to the misc state table. 2008-07-10 12:30:56 +02:00
Stefan Dösinger e988c8bd60 wined3d: WINED3DRS_ZBIAS -> misc states. 2008-07-10 12:30:56 +02:00
Stefan Dösinger 1df66c3893 wined3d: Move the bordercolor to the fragment states. 2008-07-10 12:30:56 +02:00
Stefan Dösinger 340272bc26 wined3d: Move more fog stuff to the vertex states. 2008-07-10 12:30:55 +02:00
Stefan Dösinger ecc7b5fb18 wined3d: Move fog to the vertex states. 2008-07-09 10:49:17 +02:00
Stefan Dösinger cd9690d9d0 wined3d: Move a few more states to the misc states. 2008-07-09 10:48:59 +02:00
Stefan Dösinger a4c85d788a wined3d: WINED3DRS_LASTPIXEL -> misc states. 2008-07-09 10:48:50 +02:00
Stefan Dösinger 58ef02fa69 wined3d: Alpha states -> misc pipeline states. 2008-07-09 10:48:43 +02:00
Stefan Dösinger 5f3b11e9d6 wined3d: Move wrapu to the misc states. 2008-07-09 10:48:33 +02:00
Stefan Dösinger dd90d62356 wined3d: Move a few more states to the misc pipeline. 2008-07-09 10:48:26 +02:00
Stefan Dösinger b4445e8b98 wined3d: Textureperspective->misc states. 2008-07-09 10:48:17 +02:00
Stefan Dösinger cad055ae16 wined3d: Move WINED3DRS_ANTIALIAS to the misc states. 2008-07-09 10:48:08 +02:00
Stefan Dösinger f68ac7465f wined3d: Move pixelshader application to the fragment pipeline. 2008-07-09 10:47:59 +02:00
Stefan Dösinger b24c409cea wined3d: Initialize the state table before filling it. 2008-07-09 10:47:49 +02:00
Stefan Dösinger a2628d0423 wined3d: Move Fixed function pipeline states to the new fragment structure. 2008-07-08 21:08:54 +02:00
Stefan Dösinger 3a2743f25d wined3d: Remove the state table from the shader backend. 2008-07-08 21:08:54 +02:00
Stefan Dösinger c15dfb87e9 wined3d: Create fragment processing state templates and select one.
For now the atifs selection sticks to the old rules, thus it is bound to
the available and selected shader capabilities. We may want to change that
in the future.
2008-07-08 21:08:54 +02:00
Stefan Dösinger bdfaab5a94 wined3d: Move texture transform flag stuff to the vertex pipeline states. 2008-07-08 21:08:54 +02:00
Stefan Dösinger 68948f0c71 wined3d: Move transforms to the vertex code.
Some fragment pipeline implementations may want to register their own
texture transform handlers.
2008-07-08 21:08:54 +02:00
Stefan Dösinger 1f5bce3454 wined3d: indexbuffer -> misc. 2008-07-08 21:08:54 +02:00
Stefan Dösinger b4bee02556 wined3d: Move the viewport to the vertex and misc pipeline states. 2008-07-08 21:08:54 +02:00
Stefan Dösinger 4b831a5d3e wined3d: Move shader constants to the misc states. 2008-07-08 21:08:54 +02:00
Stefan Dösinger 95099404d5 wined3d: Move lights to the vertex pipeline states. 2008-07-08 10:47:20 +02:00
Stefan Dösinger 298c953b25 wined3d: Move the scissor rect to the misc states. 2008-07-08 10:47:12 +02:00
Stefan Dösinger 3668f7508f wined3d: Move clipplanes to vertex states. 2008-07-08 10:47:05 +02:00
Stefan Dösinger eb9d3d2a8f wined3d: Move the frontfacing state to the misc state table. 2008-07-08 10:46:57 +02:00
Stefan Dösinger 956bfca1e2 wined3d: Move material application to the vertex pipeline. 2008-07-08 10:46:50 +02:00
Stefan Dösinger 141f31f05d wined3d: Move stream source and vshader to misc and vertex pipeline tables. 2008-07-08 10:46:42 +02:00
Stefan Dösinger 6675374dda wined3d: Make the stream source application a regular state function. 2008-07-08 10:46:32 +02:00
Stefan Dösinger 68dec9d161 wined3d: Implement the state merger and start to use it. 2008-07-08 10:46:20 +02:00
Stefan Dösinger 98faed8ff5 wined3d: Start the state splitup.
The idea of this patchset is to split the monolithic state set into 3
parts, vertex processing, fragment processing and other states(depth,
stencil, scissor, ...). The states will be provided in templates which
can be (mostly) independently combined, and are merged into a single
state table at device creation time. This way we retain the advantages
of the single state table and having the advantage of separated
pipeline implementations which can be combined without any manually
written glue code.
2008-07-08 10:45:56 +02:00
Francois Gouget 633ee950a1 Assorted spelling fixes. 2008-05-07 12:07:11 +02:00
Stefan Dösinger dc07ddb531 wined3d: Fix the GL_ATI_separate_stencil codepath.
glStencilFuncSeparateATI does not take a face argument, instead it
sets the front and back facing functions at once. This means the
renderstate_stencil_twosided helper function is somewhat pointless for
this extension.
2008-04-24 22:09:36 +02:00
Stefan Dösinger 9ee7e42de8 wined3d: Call activate_dimensions from the atifs code. 2008-04-24 11:54:28 +02:00
Austin English 6e59cd2c34 Spelling fixes. 2008-04-22 12:20:12 +02:00
Stefan Dösinger 3e5899b38d d3d9: Some Windows drivers set undefined attributes to 0.0. 2008-04-09 11:55:22 +02:00
Stefan Dösinger b1d8af7926 wined3d: Update copyright lines. 2008-04-02 20:22:42 +02:00
Stefan Dösinger bd68237096 wined3d: Implement TSSARGTEMP with register combiners. 2008-04-02 20:07:40 +02:00
Roderick Colenbrander 76014205de wined3d: Fix a postpixelshader_blending bug. 2008-03-31 12:14:33 +02:00
Roderick Colenbrander 4eaa424c79 wined3d: Initial post pixelshader blending support. [attempt 2].
For each pixel format we store a flag in the table whether it supports
post pixelshader blending. Before applying blending or during a
context switch we verify that blending is turned off for the
format. In case of R32F this gave a 5-6x performance boost (without
filtering and software conversion).
2008-03-28 15:50:24 +01:00
Stefan Dösinger 4640be8dc8 wined3d: Fragment processing using GL_ATI_fragment_shader.
This adds code for handling fixed function fragment processing with the
GL_ATI_fragment_shader extension. This is a sort-of programmable
interface for fragment processing at the level of shader model 1.4 in
d3d. This code is of use on r200, r250 and r280 cards(radeon 8500 to
9200) which do not support GL_ARB_fragment_program, but support pixel
shader 1.4 on Windows. This code is somewhat a counterpart to the
existing fragment processing code using GL_NV_register_combiners and
GL_NV_texture_shader.
2008-03-25 19:50:32 +01:00
Stefan Dösinger 84258723f9 wined3d: Make the state table a property of the shader backend. 2008-03-25 19:35:32 +01:00
Philip Nilsson 1110f17581 wined3d: Initialize maxAttribs in case it isn't changed by glGetIntegerv. 2008-03-24 13:26:20 +01:00
Stefan Dösinger d20768c120 wined3d: Support shininess > 128 if opengl does. 2008-03-05 19:23:06 +01:00
Stefan Dösinger 167a271434 wined3d: Support more than one texbem instruction per shader. 2008-03-05 19:22:44 +01:00
James Hawkins c2a627c6e8 janitorial: Remove links to any microsoft site. 2008-03-01 12:17:07 +01:00
Roderick Colenbrander c2d978410f wined3d: Add separate alpha blend support. 2008-02-18 14:19:57 +01:00
Stefan Dösinger c2d97b2329 wined3d: Add a test for fixed function bump mapping. 2008-02-18 13:34:25 +01:00
Andrew Talbot b3a58a2486 wined3d: Remove unneeded casts. 2008-01-24 11:41:36 +01:00
Francois Gouget d0794c4aeb Assorted spelling fixes. 2008-01-23 21:16:22 +01:00
Alexander Dorofeyev 536f98000d wined3d: Change colorkey fixup for stage 0 alphaop / alphaarg. 2008-01-22 11:19:05 +01:00
Austin English 3471f841a1 wined3d: Spelling fixes. 2008-01-18 12:53:33 +01:00
Roderick Colenbrander 916b56391d wined3d: Fix glBlendColorEXT for use on RivaTNT. 2008-01-14 13:10:28 +01:00
Stefan Dösinger fd711c57df wined3d: Combine two glScalef calls into one. 2007-12-27 13:44:18 +01:00
Stefan Dösinger 44b8915371 wined3d: Get rid of the invymat.
glScalef(1.0, -1.0, 1.0) does the same as the glMultMatrix with the
invymat matrix, and it is more optimal.
2007-12-27 13:44:13 +01:00
Alexander Dorofeyev 27c98fd628 wined3d: Also update alpha test when stage texture is NULL. 2007-12-27 13:43:49 +01:00
Stefan Dösinger 47a8a6bd44 wined3d: Implement and test vertex fixups with per stream offsets. 2007-12-21 13:44:16 +01:00
Stefan Dösinger b5f925cae0 wined3d: Implement half float vertex buffer conversion. 2007-12-21 13:13:56 +01:00
Stefan Dösinger 2d90449500 wined3d: Fixed function vertex attribute types are flexible. 2007-12-20 10:49:42 +01:00
Stefan Dösinger a3c2fb9e64 wined3d: Store if half float conversion is needed in the decl. 2007-12-20 10:48:16 +01:00
Rico Schüller b7dfe3afb6 wined3d: Fix some typos. 2007-12-20 10:47:06 +01:00
Stefan Dösinger 7a1d35e513 wined3d: Emulate half float vertices if GL_NV_half_float is not there. 2007-12-19 12:19:27 +01:00
Francois Gouget 5f7a9cea38 Assorted spelling fixes. 2007-12-07 16:35:32 +01:00
Stefan Dösinger f700cbe74b wined3d: Add an alpha blending test. 2007-12-07 16:26:43 +01:00
Gerald Pfeifer 81f32c7a38 wined3d: Fix error handling in transform_texture(). 2007-12-04 18:41:45 +01:00
Stefan Dösinger fcb49934d0 wined3d: Retrieve the height properly when setting the viewport. 2007-12-04 14:32:39 +01:00
Stefan Dösinger 8689fe32c6 wined3d: Use the proper drawable size when setting the scissor rect. 2007-12-04 14:32:39 +01:00
Stefan Dösinger 3fd0916654 wined3d: Make the code aware of GL_ARB_texture_rectangle. 2007-11-29 13:36:37 +01:00
Stefan Dösinger 3f32847494 wined3d: Do not try to disable unsupported texture units. 2007-11-28 13:40:28 +01:00
Stefan Dösinger 0353d031bc wined3d: Add some missing checkGLcall calls. 2007-11-28 13:40:28 +01:00
Stefan Dösinger f2c19fbc0b wined3d: Correctly handle the y offset with offscreen rendering.
This fixes a regression introduced with the MAD patch.
2007-11-27 16:02:34 +01:00
Stefan Dösinger 26f7eae9cf wined3d: Non power of two texture fixes. 2007-11-14 11:59:21 +01:00
Stefan Dösinger 0334c1760f wined3d: Apply matrices when switching from transformed vertices to shaders. 2007-11-14 11:59:09 +01:00
Stefan Dösinger 58a761a88b wined3d: Read the framebuffer size from the surface, not the window. 2007-11-14 11:58:47 +01:00
Stefan Dösinger e4f8a2da2b wined3d: Depth stencil fixes. 2007-11-14 11:58:36 +01:00
Stefan Dösinger 5ffea6e591 wined3d: Honor the driver's min point size. 2007-11-08 12:05:19 +01:00
Stefan Dösinger ee32ac575b wined3d: A point size fix. 2007-10-26 15:17:01 +02:00