Henri Verbeet
8a4a76f9a7
wined3d: Move "parse_state" to wined3d_shader_context.
2010-10-29 14:33:56 +02:00
Henri Verbeet
f216dba1e3
wined3d: Access reg_maps though ins->ctx in get_loop_control_const().
2010-10-28 18:18:12 +02:00
Henri Verbeet
5b36e29298
wined3d: Access reg_maps though ins->ctx in get_bool_const().
2010-10-28 18:18:12 +02:00
Henri Verbeet
ac2805e5b3
wined3d: Access reg_maps though ins->ctx in shader_hw_mov().
2010-10-28 18:18:12 +02:00
Henri Verbeet
6c5caf7a8b
wined3d: Access reg_maps though ins->ctx in shader_arb_get_register_name().
2010-10-28 18:18:11 +02:00
Henri Verbeet
5e24ccfd0c
wined3d: Read transform flags from the compile args in pshader_hw_texm3x3spec().
2010-10-27 12:11:49 +02:00
Henri Verbeet
8f5bb62769
wined3d: Read transform flags from the compile args in pshader_hw_texm3x3vspec().
2010-10-27 12:11:45 +02:00
Henri Verbeet
f624d8f7b6
wined3d: Read transform flags from the compile args in pshader_hw_texm3x3tex().
2010-10-26 11:58:34 +02:00
Henri Verbeet
db156977dd
wined3d: Read transform flags from the compile args in pshader_hw_texm3x2tex().
...
Instead of directly from the stateblock. Note that the GLSL backend doesn't
take these flags into account at all. That's probably a bug in the GLSL
backend, but needs tests.
2010-10-26 11:58:31 +02:00
Henri Verbeet
8c36e4ce1d
wined3d: Explicitly pass parameters to shader_arb_ps_local_constants().
2010-10-26 11:58:23 +02:00
Henri Verbeet
5afb593cb2
wined3d: Explicitly pass parameters to shader_arb_vs_local_constants().
2010-10-26 11:58:19 +02:00
Henri Verbeet
1b2f9d29d7
wined3d: Get rid of the posFixup field from the device.
2010-10-26 11:58:12 +02:00
Henri Verbeet
5ef7a8c242
wined3d: Explicitly pass parameters to shader_load_np2fixup_constants().
2010-10-25 14:29:37 +02:00
Henri Verbeet
b0c8b4dd95
wined3d: Flip destination coordinates when blitting to an offscreen target in arbfp_blit_surface().
2010-10-21 16:15:20 +02:00
Henri Verbeet
d508a855c1
wined3d: Recognize the SM4 sqrt opcode.
2010-10-20 18:37:07 +02:00
Henri Verbeet
4eb8fd7960
wined3d: Recognize the SM4 sample_d opcode.
2010-10-14 17:54:52 +02:00
Henri Verbeet
50f6fbadb0
wined3d: Recognize the SM4 ld opcode.
2010-10-13 13:00:30 +02:00
Henri Verbeet
7c6658f970
wined3d: Recognize the SM4 ieq opcode.
2010-10-13 13:00:26 +02:00
Henri Verbeet
a9e3058426
wined3d: Recognize the SM4 ftoi opcode.
2010-10-13 13:00:22 +02:00
Henri Verbeet
b53d346d35
wined3d: Recognize the SM4 div opcode.
2010-10-13 13:00:17 +02:00
Henri Verbeet
ff9c2fcdb2
wined3d: Recognize the SM4 utof opcode.
2010-10-11 17:11:28 +02:00
Henri Verbeet
18d7a73af8
wined3d: Recognize the SM4 sample_l opcode.
2010-10-11 17:11:28 +02:00
Henri Verbeet
407ed1b875
wined3d: Recognize the SM4 sample opcode.
2010-10-11 17:11:28 +02:00
Henri Verbeet
b2f520b5f0
wined3d: Recognize the SM4 itof opcode.
2010-10-11 17:11:28 +02:00
Henri Verbeet
d369136a96
wined3d: Recognize the SM4 imul opcode.
2010-10-08 15:26:33 +02:00
Henri Verbeet
512e6cec2c
wined3d: Recognize the SM4 movc opcode.
2010-10-07 15:58:10 +02:00
Henri Verbeet
1330f844f8
wined3d: Recognize the SM4 and opcode.
2010-10-07 15:58:09 +02:00
Matteo Bruni
20010235ad
wined3d: Keep track of texture transformation states in compiled pixel shaders.
2010-10-04 15:00:08 +02:00
Henri Verbeet
5029331f55
wined3d: Pass a wined3d_state structure to find_arb_ps_compile_args().
2010-09-29 12:22:43 +02:00
Henri Verbeet
e5ef8057ea
wined3d: Pass a wined3d_state structure to find_arb_vs_compile_args().
2010-09-29 12:22:41 +02:00
Henri Verbeet
e12f5ff08a
wined3d: Pass a wined3d_state structure to find_ps_compile_args().
2010-09-29 12:22:39 +02:00
Henri Verbeet
8d5a25bbec
wined3d: Pass a wined3d_state structure to find_vs_compile_args().
2010-09-29 12:22:36 +02:00
Henri Verbeet
a7ded9a67d
wined3d: Pass a wined3d_state structure to use_ps().
2010-09-28 17:33:17 +02:00
Henri Verbeet
9224751a13
wined3d: Pass a wined3d_state structure to use_vs().
2010-09-28 17:33:17 +02:00
Henri Verbeet
7dd4174e05
wined3d: Pass a wined3d_state structure to ffp_clip_emul().
2010-09-24 11:34:15 +02:00
Henri Verbeet
b37ce45d6c
wined3d: Move pixel shader constants to wined3d_state.
2010-09-20 13:48:13 +02:00
Henri Verbeet
33dfb9539c
wined3d: Move the pixel shader to wined3d_state.
2010-09-20 13:48:13 +02:00
Henri Verbeet
8a148cc7c5
wined3d: Move vertex shader constants to wined3d_state.
2010-09-20 13:48:12 +02:00
Henri Verbeet
dd4aea36c9
wined3d: Move the vertex shader to wined3d_state.
2010-09-20 13:48:12 +02:00
Henri Verbeet
d728d5f0ec
wined3d: Move texture bindings to wined3d_state.
2010-09-18 13:05:49 +02:00
Henri Verbeet
5a3a4ac77a
wined3d: Remove IWineD3DBaseTexture::GetTextureDimensions() from the public wined3d interface.
2010-09-18 13:05:44 +02:00
Henri Verbeet
5b3c1a2082
wined3d: Move texture states to wined3d_state.
2010-09-16 10:12:17 -05:00
Henri Verbeet
1ef4f075c1
wined3d: Introduce a separate structure for stateblock states.
...
We'd like to not pass an entire stateblock to things like state handlers and
the shader backend, because those then use the stateblock to get to the
device and through there to all the rest of wined3d. This would also be
required for serialization of wined3d draw and state change commands into a
single GL context. Resource updates would be explicitly excluded from
serialization.
2010-09-15 10:33:14 -05:00
Henri Verbeet
0b15963b4e
wined3d: Get rid of redundant comparisons against FALSE.
2010-09-14 11:43:44 -05:00
Henri Verbeet
b68d257710
wined3d: Get rid of redundant comparisons against NULL / 0.
2010-09-14 09:43:33 -05:00
Henri Verbeet
8e0cb60b09
wined3d: Do not call device_switch_onscreen_ds() while under the GL lock.
2010-09-06 16:14:18 +02:00
Henri Verbeet
3a7f08a56f
wined3d: Rename wined3d_format_desc to wined3d_format.
2010-08-31 14:23:47 +02:00
Henri Verbeet
50b5955288
wined3d: Use floating point colors in the blitter's color_fill functions.
2010-08-24 12:24:39 +02:00
Stefan Dösinger
1d710bb4ca
wined3d: The clipplane mask and texcoords are unsigned.
2010-08-23 13:37:02 +02:00
Henri Verbeet
0b24db5db5
wined3d: Also store the subresource container type.
2010-08-17 11:55:32 +02:00
Henri Verbeet
37c8632811
wined3d: Make some lookup tables const.
2010-08-04 13:24:24 +02:00
Stefan Dösinger
51cd12f35a
wined3d: The flag parameter in shader_hw_sample is a WORD.
2010-07-30 11:41:28 +02:00
Stefan Dösinger
728dd55f62
wined3d: The ARB loop unroller's iteration is unsigned.
2010-07-30 11:41:03 +02:00
Stefan Dösinger
cc8a45321f
wined3d: Add casts for int to float conversions.
2010-07-29 17:33:34 +02:00
Henri Verbeet
147f24dd78
wined3d: Remove ModifyLocation() from the public wined3d surface interface.
2010-07-22 10:13:13 +02:00
Henri Verbeet
e8ac9bbd7f
wined3d: Get rid of GLINFO_LOCATION.
2010-05-25 13:29:00 +02:00
Henri Verbeet
4d4654a014
wined3d: Set the arb_program_shader.c GLINFO_LOCATION to *gl_info.
2010-05-25 13:28:05 +02:00
Stefan Dösinger
b5da118531
wined3d: Catch RCP 0.0 in ARB.
2010-05-21 18:58:04 +02:00
Stefan Dösinger
c80b5d6afc
wined3d: Handle length zero vectors in ARB's NRM.
2010-05-21 18:58:04 +02:00
Stefan Dösinger
ed74fcefc8
wined3d: Make the mova constant more generic for relative addressing.
2010-05-21 18:58:04 +02:00
Stefan Dösinger
a0143e142b
wined3d: Order the helper constants a bit better.
2010-05-21 18:58:04 +02:00
Stefan Dösinger
a1710a32f3
wined3d: Add a function for reading (ps_)helper_const.
2010-05-21 18:58:04 +02:00
Stefan Dösinger
6946de8125
wined3d: Store a positive 1.0 in the ARB's vertex shader helper constant.
2010-05-21 18:58:04 +02:00
Stefan Dösinger
09d74b748e
wined3d: Split up the "one" pixel shader helper constant.
2010-05-21 18:58:04 +02:00
Michael Stefaniuc
6d89364ad1
wined3d: Avoid using the long type.
2010-05-21 18:58:04 +02:00
Henri Verbeet
db0784e1da
wined3d: Introduce a separate function for translating front buffer coordinates to GL coordinates.
2010-05-21 14:37:52 +02:00
Marcus Meissner
9494cdc56f
wined3d: fixed a NULL deref in create_arb_blt_fragment_program (Coverity).
2010-05-10 10:04:31 +02:00
Henri Verbeet
49e076eabd
wined3d: Separate context acquisition and state application.
2010-05-04 13:14:59 +02:00
Henri Verbeet
87f34ce5f9
wined3d: Allow the ARB shader backend to work with GL implementations with low amounts of native parameters.
2010-05-03 13:51:02 +02:00
Henri Verbeet
0122cee51f
wined3d: Make sure all fields of the shader backend caps are always initialized.
2010-05-03 13:50:57 +02:00
Henri Verbeet
d5b68e7640
wined3d: Make sure all fields of the fragment pipe caps are always initialized.
2010-05-03 13:50:45 +02:00
Henri Verbeet
f09b8e454d
wined3d: Avoid some needless depth buffer copies.
...
If an application switches between render targets of a different size, but
with the same depth/stencil surface it'll typically clear the depth/stencil
surface before drawing. However, in case of the smaller render target that
wouldn't be a full clear, so we'd have to do a depth copy if we also switched
between onscreen and offscreen rendering. Keeping track of which part of the
depth/stencil surface is current for onscreen/offscreen allows us to avoid
most of these kinds of copies. The current scheme requires the current/dirty
rectangle to have an origin at (0,0). This could be extended to an arbitrary
rectangle, but the bookkeeping becomes somewhat more complex in that case, and
it's not clear that there would be much of a benefit at this point.
2010-04-29 10:19:39 -05:00
Henri Verbeet
62acb2fdbc
wined3d: Store the front buffer surface as an IWineD3DSurfaceImpl pointer in the swapchain.
2010-04-27 12:01:59 -05:00
Henri Verbeet
d1ea48b971
wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_internal_preload().
2010-04-26 09:04:35 -05:00
Henri Verbeet
6b34b8e6d1
wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_acquire().
2010-04-22 11:28:17 +02:00
Gerald Pfeifer
07c8120b57
wined3d: Remove variable dlc_tmp which is not really used from shader_arb_generate_pshader.
2010-04-21 15:35:07 +02:00
Henri Verbeet
c7a1848656
wined3d: Store render targets as IWineD3DSurfaceImpl pointers in the device.
2010-04-20 11:14:30 +02:00
Roderick Colenbrander
bccfd7cc06
wined3d: Add BLT_OP_COLOR_FILL to blit_supported and use it in BltOverride.
2010-04-15 14:20:48 +02:00
Henri Verbeet
8eb2a2cf0c
wined3d: Disable strict draw ordering by default.
...
While some performance hit from the extra flushes was expected and would be
acceptable, the performance hit can be over 50% on some configurations, which
clearly isn't acceptable. This patch introduces a "StrictDrawOrdering"
registry key for applications affected by this, until we have a more
structural solution.
2010-04-13 21:13:36 +02:00
Roderick Colenbrander
76a9712779
wined3d: Add an initial implementation of arbfp_blit_surface.
2010-04-09 16:50:21 +02:00
Roderick Colenbrander
e7a71e15b5
wined3d: Turn blit_shader color_fixup_supported into blit_supported.
2010-04-07 18:13:35 +02:00
Roderick Colenbrander
3b6aea5934
wined3d: Move palette uploading code over to arbfp blit_shader.
2010-04-06 13:53:15 +02:00
Henri Verbeet
57cfd613a5
wined3d: Explicitly set the state handler to NULL for states with a representative.
...
We should never call the handler for states that have a rep.
2010-04-01 18:12:42 +02:00
Henri Verbeet
03c472bff0
wined3d: Don't call directly into the state table.
2010-04-01 18:12:42 +02:00
Roderick Colenbrander
a7d3b616c4
wined3d: Add color_fill to blit_shader.
2010-03-30 13:54:24 +02:00
Henri Verbeet
3aaa6ee6e7
wined3d: Rename GlPixelFormatDesc to wined3d_format_desc.
2010-03-19 14:31:47 +01:00
Roderick Colenbrander
27a96e477a
wined3d: Start moving paletted texture support to the blit_shader.
2010-03-19 13:15:21 +01:00
Henri Verbeet
18ec2525a4
wined3d: Store the swapchain instead of the surface in the context.
2010-03-16 11:44:44 +01:00
Roderick Colenbrander
c0ef7a1a93
wined3d: Move the 8-bit palette shader code over to the blit_shader backend.
2010-03-03 12:53:51 +01:00
Roderick Colenbrander
922ad80f42
wined3d: Rename yuv to complex in order to prepare for 8-bit palette fixups using the same code.
2010-03-03 12:53:41 +01:00
Henri Verbeet
576ea95803
wined3d: Remove the unused device type parameter from the shader backend's get_caps() function.
2010-02-04 13:39:27 +01:00
Henri Verbeet
497386dc5c
wined3d: Remove the unused device type parameter from the fragment pipe's get_caps() function.
...
On the subject of actually supporting software devices, we should probably
implement those by creating a software or reference adapter with appropriate
gl_info and pipe implementations and creating a device based on that.
2010-02-04 13:39:26 +01:00
Henri Verbeet
42c83f0260
wined3d: Dump ARB program shaders on compile failure.
...
Similar to the patch for GLSL.
2010-02-02 14:10:40 +01:00
Henri Verbeet
705f96fa39
wined3d: Get rid of some unnecessary casts to specific shader types.
2010-01-26 12:08:13 +01:00
Henri Verbeet
46cefd312c
wined3d: Recognize the SM4 cut opcode.
2010-01-07 09:26:54 +01:00
Henri Verbeet
3687677427
wined3d: Recognize the SM4 lt opcode.
2010-01-07 09:26:30 +01:00
Henri Verbeet
6d5aca61f3
wined3d: Recognize the SM4 iadd opcode.
2010-01-07 09:26:25 +01:00
Henri Verbeet
22939f9d29
wined3d: Recognize the SM4 emit opcode.
2010-01-07 09:26:20 +01:00
Henri Verbeet
c57c76b78e
wined3d: Recognize the SM4 ige opcode.
2010-01-07 09:26:08 +01:00
Henri Verbeet
b548e387ae
wined3d: Move shader input/output signatures to IWineD3DBaseShaderClass.
2009-12-31 12:12:16 +01:00
Henri Verbeet
b3defd4c80
wined3d: Rename "wineD3DDevice" to "device".
2009-12-10 11:54:47 +01:00
Henri Verbeet
d2ad2df637
wined3d: Remove a few redundant assignments.
2009-12-09 13:50:48 +01:00
Francois Gouget
060934c557
wined3d: Don't define nameless structs or unions.
...
Fixes compilation on systems that don't support nameless unions or structs.
2009-12-07 14:18:25 +01:00
Stefan Dösinger
0e77a381ea
wined3d: Create clip coords only if they are used.
...
If GL vertex shader clipping is supported (GLSL or NVvp), we currently
always calculate clipping results in the shader. They're gracefully
discarded by opengl, but we need 6 constants / uniforms to calculate
unused values.
2009-11-12 15:18:00 +01:00
Henri Verbeet
111307dfba
wined3d: Get rid of the GL_SUPPORT macro.
2009-10-29 13:09:33 +01:00
Henri Verbeet
48e03bc189
wined3d: Introduce a separate structure for various OpenGL implementation limits.
2009-10-29 13:09:27 +01:00
Henri Verbeet
eeb54b9922
wined3d: Keep better track of where we're using wined3d contexts.
...
The idea here is that we can restore the thread's current GL context on
context_release() if it doesn't correspond to the current wined3d context on
context_acquire().
2009-10-28 11:15:19 +01:00
Stefan Dösinger
0c72464abf
wined3d: Use the native constant limit for fitting private constants.
2009-10-26 11:42:36 +01:00
Stefan Dösinger
9ee6508132
wined3d: Remove dead code.
2009-10-26 11:42:29 +01:00
Stefan Dösinger
f15fc8f41c
wined3d: Take native constants into account when reporting ARB limits.
2009-10-26 11:42:20 +01:00
Henri Verbeet
8d2512317f
wined3d: Free the blitter private data in arbfp_blit_free() (Valgrind).
2009-10-22 10:46:15 +02:00
Henri Verbeet
6be41fd59a
wined3d: Get rid of GL_LIMITS.
2009-10-22 10:46:05 +02:00
Henri Verbeet
55047f811a
wined3d: Fix some GLINFO_LOCATION abuse.
2009-10-22 10:45:57 +02:00
Stefan Dösinger
122ed40c2b
wined3d: Use ARB constant limits in ARB.
2009-10-20 14:46:16 +02:00
Stefan Dösinger
2d802af4d9
wined3d: Make shader specific constants accessible via GL_LIMITS.
2009-10-20 14:46:08 +02:00
Stefan Dösinger
8a68f418db
wined3d: Don't reserve clipping constants needlessly.
2009-10-08 12:03:50 +02:00
Stefan Dösinger
ed2860f789
wined3d: Split the clip_parameters[2] array.
2009-10-08 12:03:42 +02:00
Stefan Dösinger
7f6ae94c0a
wined3d: Don't write to result.color in arb_add_sRGB_correction.
...
add_sRGB_correction and the generate_pshader function generate the same MOV.
There's no need to do it in two places.
2009-10-08 12:03:30 +02:00
Stefan Dösinger
dc45657f2c
wined3d: Fix vs_2_0 sgn.
...
vs_2_0's sgn has two extra parameters - temporary registers for the
instruction. This patch fixes the crash of the d3d9:visual test on windows and
properly handles the vs_2_0 version of sgn.
2009-10-02 12:36:59 +02:00
Stefan Dösinger
404aecb8da
wined3d: Test if result.clip[] works correctly.
...
The Mac Nvidia driver doesn't implement the result.clip part of
GL_NV_vertex_program2_option correctly. It complains about a syntax
error if "result.clip[0]" is used. "result.clip" compiles correctly, but
supports only one clipplane, and running the shader results in severe
rendering bugs.
2009-09-28 17:33:07 +02:00
Henri Verbeet
f88c6e5ce5
wined3d: Move common shader fields to IWineD3DBaseShaderClass.
2009-09-25 15:14:35 +02:00
Henri Verbeet
9880cd7504
wined3d: Make some variables static.
2009-09-15 14:32:36 -05:00
Henri Verbeet
f8a3a5fd49
wined3d: Check the correct debug channel in shader_arb_load_constantsF().
2009-09-08 13:06:07 +02:00
Henri Verbeet
f928d6ec87
wined3d: Fix shader_arb_load_constantsF().
2009-09-08 13:06:01 +02:00
Stefan Dösinger
d6547c535b
wined3d: Only generate the clipplane emulation KIL if a clipplane is used.
...
The KIL is quite expensive because it forces drivers to disable early Z
discard. It is cheaper to generate and switch between two shaders.
2009-09-08 13:03:03 +02:00
Henri Verbeet
4cdb1c9211
wined3d: Print a warning when an ARB program exceeds the native resource limits.
2009-09-02 11:25:58 +02:00
Henri Verbeet
055906e2a9
wined3d: Properly check for ARB program compile errors.
2009-09-02 11:25:58 +02:00
Henri Verbeet
560d63548d
wined3d: Remove trailing spaces.
2009-08-27 11:45:37 +02:00
Stefan Dösinger
3cd91a451d
wined3d: Use 50 chars for register names in texm3x3* functions.
2009-08-19 17:28:08 +02:00
Henri Verbeet
d900491310
wined3d: Replace find_clip_texcoord() with a generic function for finding a free input register.
2009-08-17 13:57:50 +02:00
Henri Verbeet
f7918b978f
wined3d: Make the "luminanceparams" shader_reg_maps member a bitmap.
2009-08-12 13:22:50 +02:00
Henri Verbeet
95bb4c0486
wined3d: Make the "bumpmat" shader_reg_maps member a bitmap.
2009-08-12 13:22:44 +02:00
Henri Verbeet
270f57e755
wined3d: Make the "address" shader_reg_maps member a bitmap.
2009-08-12 13:22:30 +02:00
Henri Verbeet
6fa9fa15da
wined3d: Make the "temporary" shader_reg_maps member a bitmap.
2009-08-11 12:36:20 +02:00
Henri Verbeet
50853e295b
wined3d: Make the "texcoord" shader_reg_maps member a bitmap.
2009-08-11 12:36:16 +02:00
Francois Gouget
e74efb5487
Assorted spelling fixes.
2009-08-11 12:35:38 +02:00
Henri Verbeet
8d746c31ba
wined3d: Properly handle negative loop step in shader_glsl_loop().
2009-08-10 13:52:37 +02:00
Stefan Dösinger
14eedc5be7
wined3d: Watch out about higher constants when clamping ps 1.x consts.
...
ps 1.x supports only 8 constants, so the shader load code dirtifies the
first 8 on a shader switch. However, the constant load code reloaded all dirty
consts with clamping. That potentially left constants > 8 clamped.
2009-08-07 14:56:33 +02:00
Henri Verbeet
3bf0ad4528
wined3d: Explicitly pass the context to the shader_select() handler.
2009-08-07 12:11:06 +02:00
Henri Verbeet
4c1b3de936
wined3d: Call the shader_load_np2fixup_constants() handler directly from inside the shader backend.
2009-08-06 17:26:30 +02:00
Henri Verbeet
03686cb6bd
wined3d: Explicitly pass the context to the shader_load_constants() handlers.
2009-08-06 17:26:30 +02:00
Henri Verbeet
a7251f0f4e
wined3d: Track render_offscreen in the context.
...
This makes sure the relevant states in FindContext() are actually marked dirty
when needed.
2009-08-06 17:26:30 +02:00
Stefan Dösinger
2e9362d0fb
wined3d: ARB clipplane init needs the helper constant.
2009-08-05 11:19:14 +02:00
Henri Verbeet
da1e5573da
wined3d: Rename WineD3DContext to struct wined3d_context.
2009-08-03 15:01:48 +02:00
Henri Verbeet
be536ebe2f
wined3d: Get rid of activeContext.
2009-07-24 13:10:57 +02:00
Henri Verbeet
ee4d18cc83
wined3d: Pass NULL to ActivateContext() when we don't need a specific target.
...
Once we keep track of the wined3d context for each thread,
lastActiveRenderTarget won't do what we want here.
2009-07-21 14:22:44 +02:00
Stefan Dösinger
cd7f43b00d
wined3d: Don't activate a context unless we need one.
2009-07-20 12:23:07 +02:00
Henri Verbeet
43e6686a78
wined3d: Rename _WineD3D_GL_Info to struct wined3d_gl_info.
2009-07-17 11:22:07 +02:00
Stefan Dösinger
9d14dcab68
wined3d: Use the unmodified source in MOVA.
...
The code removed by this patch was a leftover from the time when we tried to
emulate MOVA with a plain ARL, which only supports one source in plain ARB.
This breaks the more sophisticated MOVA and 4 component ADDR register we have
now however.
2009-07-16 11:15:45 +02:00
Stefan Dösinger
387d337a70
wined3d: EXP and EXPP are scalar operations.
2009-07-15 13:17:02 +02:00
Stefan Dösinger
2bfdff198c
wined3d: Check the correct constant limit.
2009-07-10 13:07:33 +02:00
Henri Verbeet
483d552e21
wined3d: Allow shader_buffer_init() to fail.
2009-07-09 11:38:02 +02:00
Henri Verbeet
40b411958b
wined3d: Rename "SHADER_BUFFER" to something sane.
2009-07-09 11:37:58 +02:00
Henri Verbeet
32fd8f2130
wined3d: checkGLcall() doesn't need a \n.
2009-07-07 11:50:22 +02:00
Henri Verbeet
2ac34bf231
wined3d: Add some missing float suffixes.
...
The compiler should be smart enough to fix most of these, but it looks sloppy.
2009-07-07 11:50:05 +02:00
Tobias Jakobi
0caebe5f51
wined3d: Force NP2 constant reload in shader_arb_select.
2009-07-02 11:56:57 +02:00
Tobias Jakobi
ef280280c2
wined3d: Implement shader_arb_load_np2fixup_constants.
2009-07-02 11:56:51 +02:00
Tobias Jakobi
e29babbf6d
wined3d: Add NP2 fixup code to shader_hw_sample (ARB).
2009-07-02 11:56:45 +02:00
Tobias Jakobi
034fa4268c
wined3d: Add NP2 fixup code to shader_arb_generate_pshader.
2009-07-02 11:56:39 +02:00
Tobias Jakobi
ec30e9a85e
wined3d: Add arb_ps_np2fixup_info structure and improve structure packing for arb_ps_compiled_shader.
2009-07-02 11:56:33 +02:00
Stefan Dösinger
c82da7d975
wined3d: Don't dirtify too many shader constants.
...
If we have start = 4, count = 3, the highest dirty constant is the one with index 6. start + count gives 7,
so it already includes the zero-based array correction. Don't add an additional 1.
Additionally to the inefficiency of looking at one extra constant, this causes problems if the driver
rejects loading 257 constants on the initial load. In this case no constant is loaded if
GL_EXT_gpu_program_parameters is used.
2009-07-01 13:14:34 +02:00
Henri Verbeet
40bc47901c
wined3d: Use flags for driver quirks.
2009-07-01 11:41:44 +02:00
Stefan Dösinger
d4312ebb16
wined3d: Add the vertex shader footer in the main function.
2009-06-29 12:28:40 +02:00
Stefan Dösinger
5befed21f6
wined3d: Write the vshader footer in a separate function.
2009-06-29 12:28:31 +02:00
Stefan Dösinger
5859d87754
wined3d: Implement function calls with NV exts.
2009-06-29 12:28:21 +02:00
Stefan Dösinger
031401a070
wined3d: ARB*p is already on after a depth blit.
2009-06-29 12:28:13 +02:00
Stefan Dösinger
9d63585352
wined3d: Don't disable ARBfp if the replacement pipeline is used.
...
If the replacement pipeline is used, ARBfp is always on. Disabling it
can break shaders or the replacement pipeline, because the shader and
ffp code assumes the extension is on.
2009-06-29 12:28:06 +02:00
Henri Verbeet
7363b6e2e3
wined3d: Document GL context dependencies.
2009-06-26 12:05:07 +02:00
Stefan Dösinger
d1cd08b7b3
wined3d: Honor WINED3DSPSM_NOT in ARB.
2009-06-26 12:02:29 +02:00
Stefan Dösinger
8fb1e2acfb
wined3d: Jump to the else branch if cond is false, not endif.
2009-06-26 12:02:18 +02:00
Stefan Dösinger
a07b50c94c
wined3d: Support writemasks on texkill in ARB.
2009-06-26 12:02:12 +02:00
Stefan Dösinger
3a327908de
wined3d: Initialize the used clip planes even if no clip emulation is used.
2009-06-26 12:02:07 +02:00
Stefan Dösinger
4d86eac60a
wined3d: Unclamp vertex colors for 3.0 shaders in ARB if needed.
2009-06-26 12:02:01 +02:00
Stefan Dösinger
f69fb5c011
wined3d: POW and LOG operate on the absolute value.
2009-06-26 12:01:54 +02:00
Stefan Dösinger
bd14b6e2b4
wined3d: IFC requires GL_NV_fragment_program2.
2009-06-26 12:01:44 +02:00
Stefan Dösinger
d4854b636c
wined3d: Beware of double negations.
2009-06-26 12:01:36 +02:00
Henri Verbeet
f98c6e3cff
wined3d: Allow the existence of other shader types in get_loop_control_const().
2009-06-24 11:28:50 +02:00
Henri Verbeet
943ed4e1e9
wined3d: Eliminate a redundant local variable in get_loop_control_const().
2009-06-24 11:28:45 +02:00
Henri Verbeet
aec6d319fa
wined3d: Avoid a redundant copy.
2009-06-24 11:28:38 +02:00
Henri Verbeet
fd8ebebe56
wined3d: Use a proper structure for "loop_control".
2009-06-24 11:28:33 +02:00
Henri Verbeet
4caf43ddb7
wined3d: Add some missing GL locking documentation to arb_program_shader.c.
2009-06-24 11:28:27 +02:00
Austin English
a4f2d3d18e
wined3d: Fix a compiler warning.
2009-06-24 11:25:09 +02:00
Stefan Dösinger
e0ec956b3d
wined3d: Fix pixelshader ifc.
...
The NVfp2 control flow uses the D3D syntax, and doesn't need the inversed
branch condition we're using in the vertex shader.
2009-06-23 15:53:00 +02:00
Stefan Dösinger
444b7ac7e5
wined3d: Use a local parameter for the position fixup.
...
I don't like that I have to do this because the posFixup is in all
vertex programs, so its at the same position and could be loaded
globally. Unfortunately, there are only 256 env parameters usually,
which makes it impossible for any shader to use c256, even if it does
not use indirect addressing, and so we can't claim 256 constant
support.
2009-06-23 15:53:00 +02:00
Stefan Dösinger
7ffd10da28
wined3d: Find the clip texcoord before compiling.
...
The best is to put this together with the rest of the shader_arb_priv initialization.
2009-06-23 15:53:00 +02:00
Stefan Dösinger
e64d48371f
wined3d: Add a function to control use of NV_vp2 clipplanes.
...
I find it helpful for debugging to have this controlled at a central place,
without having to disable the entire GL extension or manually find all the
places where GL_SUPPORT(NV_VERTEX_PROGRAM2_OPTION) controls clipplane use. It
is useful for debugging the emulation code on NV cards and for debugging mac
driver issues.
2009-06-23 15:53:00 +02:00
Stefan Dösinger
85af0b2943
wined3d: Don't emulate clipplanes with ffp vp and fix a wrong if condition.
...
b2f09fd204
accidentally got the
device->vs_clipping check wrong. The FFP replacement should emulate
clipping if GL can't do this natively with vertex shaders, not the
other way. Also don't emulate clipping if we're using fixed function
vertex processing because (a) clipping is always supported by GL in
this case, and (b), fragment.texcoord[7] is undefined. (Or in the
worst case set to something bad by the app).
2009-06-23 15:53:00 +02:00
Henri Verbeet
114b5bdefb
wined3d: Fix a comment.
...
This was actually broken by 122af07a30
.
2009-06-23 11:48:10 +02:00
Gerald Pfeifer
569b448e13
wined3d: Fix logical condition in find_clip_texcoord().
2009-06-22 13:25:27 +02:00
Stefan Dösinger
3845b37a21
wined3d: Advertise SM 3.0 in ARB if the extensions are available.
2009-06-22 11:27:11 +02:00
Stefan Dösinger
e211a0b4a4
wined3d: Enable Shader Model 2.0 in ARB.
...
If the needed constants are available, we can support all vs_2_0 and ps_2_0
requirements with the plain ARB extensions. We cannot however, run SM 2.0a or
SM 2.0b.
2009-06-22 11:27:05 +02:00
Stefan Dösinger
e1c6b73e2d
wined3d: Make the ARB index offset work with emulated MOVA.
2009-06-22 11:26:57 +02:00
Stefan Dösinger
77820d5ea5
wined3d: XXXC CC doesn't work even with NV_FP2 on.
2009-06-22 11:26:50 +02:00
Stefan Dösinger
26d17fe04c
wined3d: Implement MRTs in ARB.
2009-06-22 11:26:43 +02:00
Stefan Dösinger
bb8bcf5878
wined3d: Reload the first 8 constants on a 1.x and != 1.x ps switch.
...
ps 1.x constants are clamped to [-1;1], constants in >= 2.0 pshaders
are not. This means we have to reload constants when switching between
those shader types in ARB. In GLSL this is not a concern because
constants are tied to program objects and are reloaded on a shader
change anyway.
2009-06-22 11:26:33 +02:00
Stefan Dösinger
2364ce08e5
d3d9: Add a SGN test.
2009-06-22 11:26:14 +02:00
Stefan Doesinger
b2f09fd204
wined3d: Emulate clipplanes in ARB if the NV extensions are not available.
...
This patch tries to find a free texture coordinate to load up to 4 clip
coordinates into the pixel shader, and uses KIL to throw away fragments
that are cut by a clipplane. If no free texture coordinate is found,
clipping is not done. If more than 4 clipplanes are used, only the first
4 are actually enabled. That should be pretty rare though.
2009-06-19 14:54:00 +02:00
Stefan Doesinger
7baf7c6518
wined3d: Implement vertex texture fetch in ARB.
2009-06-19 14:53:50 +02:00
Stefan Doesinger
f1e97cdfbc
wined3d: Don't run out of varyings because of clipplanes.
2009-06-19 14:53:43 +02:00
Stefan Doesinger
b53b5909ff
wined3d: Handle SM 3.0 varyings in ARB.
2009-06-19 14:53:20 +02:00
Stefan Doesinger
3aaa530ca9
wined3d: Properly load the y correction.
2009-06-18 15:17:26 +02:00
Stefan Doesinger
c9ef1ed28c
wined3d: Deal with instructions that do not support _SAT.
2009-06-17 12:24:43 +02:00
Stefan Doesinger
a7b605af64
wined3d: Implement D3DSPDM_PARTIALPRECISION support.
2009-06-17 12:24:35 +02:00
Stefan Doesinger
dfd338de77
wined3d: Add modifier support to tex and friends.
2009-06-17 12:20:54 +02:00
Stefan Doesinger
7856c1c26f
wined3d: Fix texm3x3pad.
...
The register number is already in the name we got from get_register_name,
don't add it twice.
2009-06-17 12:20:48 +02:00
Stefan Doesinger
58c3a0c832
wined3d: Implement vpos and vface.
2009-06-17 12:19:31 +02:00
Stefan Doesinger
ae600fe0c8
wined3d: Implement texldl in ARB.
2009-06-17 12:19:15 +02:00
Stefan Doesinger
4830a29101
wined3d: Implement texldd in ARB.
2009-06-16 13:57:34 +02:00
Stefan Doesinger
2f6a713805
wined3d: Use flags instead of bools to control shader_hw_sample.
2009-06-16 13:57:30 +02:00
Stefan Doesinger
e608ef856e
wined3d: Implement IFC in ARB.
2009-06-16 13:57:20 +02:00
Stefan Doesinger
dfefbcd00d
wined3d: Implement break and breakc.
2009-06-16 13:57:15 +02:00
Stefan Doesinger
c220bafa2c
wined3d: Unroll loops in ARB if needed.
...
This is needed to allow us to claim vs_2_0 support with plain
GL_ARB_vertex_program. vs_2_0 allows loops without breaks.
2009-06-16 13:57:04 +02:00
Stefan Dösinger
258d99d289
wined3d: Implement dsy in ARB.
2009-06-10 11:52:15 +02:00
Stefan Dösinger
51cdc9d361
wined3d: Implement loops with the NV extensions.
2009-06-10 11:52:01 +02:00
Stefan Dösinger
298bd3c50d
wined3d: Store the bumpmap ARB constants in ARB structures.
2009-06-10 11:51:49 +02:00
Henri Verbeet
a44f84fdf7
wined3d: Add a proper enum value for "no extension".
...
This would allow an extension check for ARB_COLOR_BUFFER_FLOAT to work.
2009-06-04 12:19:02 +02:00
Henri Verbeet
ad6279de9f
wined3d: Replace the wined3d hash table with the generic red-black tree.
2009-06-03 11:40:14 +02:00
Stefan Dösinger
2afcb794f2
wined3d: Implement clipplanes in the ARB backend.
...
Using GL_NV_vertex_program2_option so far. If we're really desparate we can
handle some cases without the extension by using a custom varying and texkill
in the fragment program.
2009-06-02 12:09:54 +02:00
Stefan Dösinger
dfc9141458
wined3d: Use condition code for sRGB write correction if available.
...
This gives a small performance improvement. Don't enable NVfp for it though,
because the NVfp penalty is bigger than the gain from this patch. But if NVfp
is enabled anyway, make use of it.
2009-06-02 12:09:38 +02:00
Stefan Dösinger
7e1100d0e4
wined3d: Handle LRP in vertex shaders.
...
The ARB "LRP" instruction is a fragment program only instruction. It is
however valid in vs_2_0+ vertex shaders, so we have to emulate it.
2009-06-02 12:09:26 +02:00
Stefan Dösinger
38076e08ca
wined3d: Add a comment about texbem and X2D.
2009-06-01 16:16:00 +02:00
Stefan Dösinger
de12f880ce
wined3d: Don't enable the NV frag extensions if we don't need them.
...
Enabling the NV extensions occupies a temp register for some reason. Avoid
needlessly enabling it.
2009-06-01 16:16:00 +02:00
Stefan Dösinger
5a07bacd36
wined3d: Write result.color in one mov.
...
Otherwise the Nvidia assembler needs one temp reg.
2009-06-01 16:16:00 +02:00
Stefan Dösinger
050735be79
wined3d: Revert "WineD3D: use CMP instead of SLT and SGE in sRGB correction".
...
This reverts patch ba35760f9f
.
The original patch did not achive its goal, because CMP is a macro that is
expanded to SLT, SGE, MUL, MAD, at least on nvidia hardware. To make matters
worse, it uses a temporary register, and the assembler usually is not clever
enough to find a free temporary from the shader code. If we generate the code
outselves we can pick one of our temps for this job.
2009-06-01 16:16:00 +02:00
Stefan Dösinger
8665ee5906
wined3d: Use Rx registers for sRGB correction if possible.
...
This removes another reason to declare TA, TB and TC.
2009-06-01 16:16:00 +02:00
Stefan Dösinger
7168b62323
wined3d: Use NRM from GL_NV_fragment_program2 if available.
2009-05-29 11:27:51 +02:00
Stefan Dösinger
d8e219be75
wined3d: Avoid the TMP_COLOR mov in some cases.
...
Many 2.0 and 3.0 shaders end with a "mov oC0, rx". If sRGB writing is enabled,
the ARB backend writes to a TMP_COLOR temporary, and at the end of the shader
writes the sRGB corrected color to result.color. If oC0 is not partially
rewritten after the mov, we can ignore the mov, not declare TMP_COLOR at all,
and just use the rx register as input for the sRGB correction code. This saves
a temporary and an instruction.
2009-05-29 11:27:44 +02:00
Stefan Dösinger
da7176be2a
wined3d: Use DP2A or X2D for dp2add if available.
2009-05-29 11:27:29 +02:00
Stefan Dösinger
e2be741bc0
wined3d: Remove a MESA hack.
2009-05-29 11:27:23 +02:00
Stefan Dösinger
5f723bc44a
wined3d: Allocate the proper size for the lconst map.
2009-05-29 11:27:14 +02:00
Henri Verbeet
d37472f27b
wined3d: Add missing ActivateContext calls to shader_destroy() implementations.
2009-05-29 11:26:32 +02:00
Stefan Dösinger
e70c80add9
wined3d: Emulate if(bool) in ARB shaders.
2009-05-28 12:46:01 +02:00
Stefan Dösinger
e492dd858e
wined3d: Add a function around the handler table.
...
This reduces the number of methods in the shader backend(the instr
modifiers can be handled in that wrapper) and it will help flow
control emulation in the ARB backend.
2009-05-28 12:45:45 +02:00
Stefan Dösinger
aad92c0780
wined3d: Manage vs_compile_args in the backends.
2009-05-28 12:45:32 +02:00
Stefan Dösinger
814dd42f25
wined3d: Manage ps_compiled_shader in the backends.
2009-05-28 12:45:21 +02:00
Stefan Dösinger
8763f6eac5
wined3d: Make find_gl_vshader backend specific.
2009-05-28 12:45:10 +02:00
Stefan Dösinger
732a9a15d5
wined3d: Remove the forward declaration added in the last patch.
2009-05-28 12:44:59 +02:00
Stefan Dösinger
d0d681c81e
wined3d: Make find_gl_pshader backend private.
2009-05-28 12:44:43 +02:00
Stefan Dösinger
5865d9c01b
wined3d: Store the compile args in the compile context, not the shader.
2009-05-28 12:44:22 +02:00
Stefan Dösinger
6492622350
wined3d: sincos for vertex shaders.
...
SCS is unfortunately a fragment program only instruction. If we have the NV
extensions we can use SIN and COS. Otherwise we have to approximate sine and
cosine with a taylor series. Luckily we're provided with the necessary
constants by the application.
2009-05-27 11:56:53 +02:00
Stefan Dösinger
2f3faf4526
wined3d: Put some ARB declarations in the right place.
...
TMP_POS is only used in vertex shaders, declare it in the vshader
specific code. The sRGB constants are only used by pixel shaders, so
move them to the ps specific code, and avoid reading the stateblock.
2009-05-27 11:56:29 +02:00
Stefan Dösinger
f484cbbf91
wined3d: Get rid of Tx hardcoding in texbem.
2009-05-27 11:56:07 +02:00
Stefan Dösinger
da1b8d0c8e
wined3d: Replace a few hardcoded Tx registers with proper name getters.
2009-05-27 11:56:01 +02:00
Stefan Dösinger
7fc4279cb8
wined3d: Implement DSX in ARB.
...
DSY is not that easy because we have to deal with the inverted coordinate
system in onscreen(!) rendering - see GLSL dsy.
2009-05-27 11:55:52 +02:00
Stefan Dösinger
122af07a30
wined3d: Implement SGN in ARB.
2009-05-21 16:17:52 +02:00
Stefan Dösinger
8e45e48b0c
wined3d: Support vec4 A0 with NV_vertex_program2_option.
2009-05-21 16:17:52 +02:00
Stefan Dösinger
d0756ee537
wined3d: Support ABS and ABSNEG with NV extensions if available.
2009-05-21 16:17:52 +02:00
Stefan Dösinger
01ec5068e2
wined3d: Add NV asm extension support to the ARB backend.
2009-05-21 16:17:51 +02:00
Stefan Dösinger
60f20a2f39
wined3d: Support ABS and ABSNEG in ARB.
2009-05-21 16:17:51 +02:00
Stefan Dösinger
7b1d48721d
wined3d: Emulate the 4 component address register in ARB.
2009-05-20 10:55:17 +02:00