Commit Graph

3244 Commits

Author SHA1 Message Date
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 1276b090b4 wined3d: Update clipplanes on a shader-fixed function switch.
The view matrix that was set at the time the clipplane was applied is
hardcoded into the clipplane. With vertex shaders clip planes ignore
the view matrix in d3d. We implement that, but this also means that
the clip planes potentially change when we switch between vs and fixed
func.
2009-06-02 12:09:46 +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
Henri Verbeet 22022cf8b3 wined3d: Create a texture_cleanup() function. 2009-06-02 11:57:22 +02:00
Henri Verbeet 451a416fcf wined3d: Call resource_init() from basetexture_init(). 2009-06-02 11:57:22 +02:00
Henri Verbeet 812ee5208c wined3d: Partially revert 7433eb76b5.
The write mask sizes for the input and output semantics can be different,
resulting in compilation failure.
2009-06-02 11:57:22 +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 7433eb76b5 wined3d: Use the proper OUT swizzle in handle_ps3_input(). 2009-05-29 11:26:54 +02:00
Henri Verbeet 5654544725 wined3d: Add device resources from resource_init().
This is consistent with removing them from resource_cleanup().
2009-05-29 11:26:44 +02:00
Henri Verbeet 5e0f541621 wined3d: Remove ResourceReleased() from the public device interface. 2009-05-29 11:26:38 +02:00
Henri Verbeet d37472f27b wined3d: Add missing ActivateContext calls to shader_destroy() implementations. 2009-05-29 11:26:32 +02:00
Louis Lenders 06936f04c0 wined3d: Fix CheckDeviceMultiSampleType when queried with D3DMULTISAMPLE_NONE. 2009-05-28 15:02:08 +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
Henri Verbeet 13a05caa97 wined3d: Remove the "declaration" parameter to IWineD3DDeviceImpl_CreateVertexShader().
Once upon a time this was used for creating fake vertex shader
attribute semantics for d3d8 shaders. We don't need this anymore since
device_stream_info_from_declaration() will use the vertex
declaration's output slot to load the data, if present. That also
avoids the potentially expensive matching of attribute semantics
between vertex shader and declaration for d3d8.
2009-05-28 12:42:18 +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 3925cd5f15 wined3d: Use the output signature to setup SM4 vertex shader output semantics. 2009-05-28 12:42:18 +02:00
Stefan Dösinger 0629585c24 wined3d: Work around an ARBFP vs GLSL bug in Mac OS. 2009-05-27 11:57:54 +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
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
Henri Verbeet 1ccfab171f wined3d: Use SM3 shader limits for SM4.
This isn't completely right, since as far as I'm aware SM4 doesn't have shader
limits in the same sense as previous shader models, but this should do for now.
2009-05-26 13:50:08 +02:00
Henri Verbeet f0e303b0f2 wined3d: Add the output signature to IWineD3DDevice_CreateVertexShader(). 2009-05-26 13:49:55 +02:00
Henri Verbeet 2153b4d998 wined3d: Split the info log into separate lines. 2009-05-26 13:49:50 +02:00
Henri Verbeet 1d7845dd33 wined3d: Pass a proper format desc to resource_init() in IWineD3DDeviceImpl_CreateBuffer(). 2009-05-26 13:49:37 +02:00
Louis Lenders f55522ab6b wined3d: Match device name string to windows one. 2009-05-25 14:21:56 +02:00
Henri Verbeet 6a9212a1b2 wined3d: Fix debug_d3dusagequery() to handle combinations of flags. 2009-05-25 11:23:53 +02:00