Commit Graph

257 Commits

Author SHA1 Message Date
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
Henri Verbeet 65321dd1ce wined3d: Introduce shader_sm1_read_semantic(). 2009-04-29 13:08:08 +02:00
Henri Verbeet 8d4c90496f wined3d: Store the sampler type in struct shader_reg_maps.
Instead of the usage token.
2009-04-29 13:08:01 +02:00
Henri Verbeet 9db67a5971 wined3d: Clear reg_maps in shader_get_registers_used() instead of the callers. 2009-04-28 13:10:02 +02:00
Henri Verbeet 0df4514894 wined3d: Use shader_sm1_read_dst_param() and shader_sm1_read_src_param() in shader_get_registers_used(). 2009-04-28 13:10:02 +02:00
Henri Verbeet e001876163 wined3d: Create a separate function to record register usage. 2009-04-28 13:10:02 +02:00
Henri Verbeet abc253f52f wined3d: Add a function to read a destination parameter from SM1-3 bytecode. 2009-04-27 13:25:26 +02:00