Stefan Dösinger
5859d87754
wined3d: Implement function calls with NV exts.
2009-06-29 12:28:21 +02:00
Stefan Dösinger
bd14b6e2b4
wined3d: IFC requires GL_NV_fragment_program2.
2009-06-26 12:01:44 +02:00
Stefan Dösinger
26d17fe04c
wined3d: Implement MRTs in ARB.
2009-06-22 11:26:43 +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
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
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
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
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
8763f6eac5
wined3d: Make find_gl_vshader backend specific.
2009-05-28 12:45:10 +02:00
Stefan Dösinger
d0d681c81e
wined3d: Make find_gl_pshader backend private.
2009-05-28 12:44:43 +02:00
Henri Verbeet
fcf7844653
wined3d: Match the d3d10 name for WINED3DDECLUSAGE_POSITION.
...
I.e., make sure that if a SM4 shader uses SV_POSITION it ends up as position
data.
2009-05-28 12:42:18 +02:00
Henri Verbeet
2ee0d47a49
wined3d: Use strings for shader input/output semantics.
2009-05-27 11:12:12 +02:00
Henri Verbeet
19cb4594e3
wined3d: Use a separate structure for vertex shader attributes.
...
In D3D10 shaders input/output semantics are strings rather than predefined
types. Unfortunately, the code in vshader_get_input() can be performance
critical, depending on application behaviour. Since vshader_get_input() is
only relevant for d3d9 shaders anyway, just store the usage and usage_idx for
these shaders.
2009-05-27 11:12:07 +02:00
Henri Verbeet
e6efb797c3
wined3d: Make "packed_output" a bitmap.
2009-05-27 11:11:57 +02:00
Henri Verbeet
10fadadc54
wined3d: Use the "input_registers" bitmap for vertex shader attributes as well.
2009-05-27 11:11:53 +02:00
Henri Verbeet
664b17b9ee
wined3d: Make "packed_input" a bitmap.
2009-05-27 11:11:48 +02:00
Stefan Dösinger
7b1d48721d
wined3d: Emulate the 4 component address register in ARB.
2009-05-20 10:55:17 +02:00
Stefan Dösinger
c7ca3793cc
wined3d: Implement mova rounding in arb.
2009-05-20 10:55:03 +02:00
Henri Verbeet
adc9bfe3fd
wined3d: Pass a struct wined3d_shader_register to shader_record_register_usage().
2009-05-12 11:18:02 +02:00
Henri Verbeet
2039702035
wined3d: Pass a struct wined3d_shader_register to shader_dump_register().
2009-05-12 11:17:56 +02:00
Henri Verbeet
d2409581e0
wined3d: Record register usage only once.
2009-05-08 18:16:48 +02:00
Stefan Dösinger
2fd485ae31
winedd: Move shader_*_add_instruction_modifiers into the shader backend.
2009-05-08 12:20:18 +02:00
Stefan Dösinger
f9276a6429
wined3d: Keep track of used float constants.
2009-05-08 12:15:15 +02:00
Henri Verbeet
5e473cb17f
wined3d: Group register information into struct wined3d_shader_register.
2009-05-08 12:13:17 +02:00
Henri Verbeet
690d666de5
wined3d: Add support for immediate constants to shader_dump_register().
2009-05-07 14:44:22 +02:00
Henri Verbeet
65622a052c
wined3d: Create a struct wined3d_shader_version to store version information.
...
The version tokens in SM1-3 and SM4 are similar, but not the same.
2009-05-07 14:44:21 +02:00
Henri Verbeet
5c63d93e18
wined3d: Store the shader version in the frontend's private data.
2009-05-07 14:44:21 +02:00
Stefan Dösinger
f5e24f7a85
wined3d: Implement texldd.
...
GL_ARB_shader_texture is supported on dx9 ATI cards(and probably dx10
ones too). For Nvidia cards I included a fallback to normal texld.
GL_EXT_gpu_shader4 supports similar texture*Grad GLSL functions, just
with an EXT prefix instead of ARB. For dx9 NV cards we'd have to use
GL_NV_fragment_program2, which supports a texldd equivalent on those
cards.
2009-05-05 14:12:52 +02:00
Henri Verbeet
454dd2ed07
wined3d: Implement shader_sm4_is_end().
2009-05-05 11:34:39 +02:00
Henri Verbeet
2a5a6a3439
wined3d: Store the SM 1-3 opcode information tables in the SM 1-3 frontend.
2009-05-05 11:34:28 +02:00
Henri Verbeet
868f5bfc7c
wined3d: Handle reading the shader header in the frontend.
...
In SM 1-3 this is just the version, in SM4 this also includes the token count.
2009-05-05 11:34:15 +02:00
Henri Verbeet
ef074cdde1
wined3d: Introduce a stubbed SM4 shader frontend.
2009-05-05 11:34:07 +02:00
Henri Verbeet
dddd1f0211
wined3d: Select the frontend based on the version token.
2009-05-04 12:53:16 +02:00
Henri Verbeet
5f96c0083a
wined3d: Add a frontend function to determine if there are any tokens left.
2009-05-04 12:53:12 +02:00
Henri Verbeet
2378108eb9
wined3d: Create a frontend for parsing shaders.
2009-05-04 12:53:08 +02:00
Henri Verbeet
5a7afd9b2a
wined3d: Move SM 1-3 parsing functions to their own file.
2009-05-04 12:53:04 +02:00
Henri Verbeet
6eb43e35c9
wined3d: Get rid of the remaining WINED3DSP_REGNUM_MASK usage.
2009-05-04 12:52:59 +02:00
Henri Verbeet
5e072395b4
wined3d: Avoid using WINED3DSP_REGNUM_MASK in the def/defi/defb handlers.
2009-05-01 13:12:08 +02:00
Henri Verbeet
a605fcd2fd
wined3d: Introduce shader_sm1_read_comment() to read shader comments.
2009-05-01 13:12:04 +02:00
Henri Verbeet
59705b9c20
wined3d: Use the shader_sm1_read_*() functions in shader_trace_init().
2009-05-01 13:11:42 +02:00
Henri Verbeet
752d80400d
wined3d: Merge shader_dump_arr_entry() into shader_dump_register().
2009-05-01 13:11:37 +02:00
Henri Verbeet
bf4f7bf34a
wined3d: Split shader_dump_param() in shader_dump_src_param() and shader_dump_dst_param().
2009-04-30 12:47:59 +02:00
Henri Verbeet
54a3054e5a
wined3d: Pass a struct wined3d_shader_semantic to shader_dump_decl_usage().
2009-04-30 12:47:56 +02:00
Henri Verbeet
032b8d4c02
wined3d: Explicitly pass register type, index, etc. to shader_dump_param().
2009-04-30 12:47:52 +02:00
Henri Verbeet
18df05eb34
wined3d: Explicitly pass the register type and index to shader_get_float_offset().
2009-04-30 12:47:44 +02:00
Henri Verbeet
88b6d5eb0b
wined3d: Relative addressing tokens are always source parameters.
...
So the "is_src" argument to shader_dump_arr_entry() is redundant (and wrong).
2009-04-29 13:08:29 +02:00
Henri Verbeet
52644ab053
wined3d: The "input" parameter to shader_dump_param() should be a BOOL.
...
It's used to determine if the token is a source or destination parameter. A
subsequent patch will split shader_dump_param() in two different functions.
2009-04-29 13:08:22 +02:00
Henri Verbeet
42a8041cb8
wined3d: Handle the sampler type shift in the frontend.
2009-04-29 13:08:14 +02:00