Commit Graph

3179 Commits

Author SHA1 Message Date
Stefan Dösinger ba35760f9f wined3d: Use CMP instead of SLT and SGE in sRGB correction.
This shortens the code and reduces the amount of temp regs used by 1.
2009-05-19 15:24:48 +02:00
Stefan Dösinger ad217029b0 wined3d: Get rid of TMP accesses in texm3x3* instructions. 2009-05-19 15:24:39 +02:00
Stefan Dösinger ced325f816 wined3d: Get rid of TMP access in texm3x2*.
texm3x2pad knows which register the following texm3x2depth or tex instruction
will use, and it knows that this register is uninitialized. So use it for
temporary storage instead of TMP.
2009-05-19 15:24:31 +02:00
Stefan Dösinger 17b001788f wined3d: Get rid of TMP2 and some easy TMP register uses.
We have 5 temporary registers declared for private use. We can get rid of two
of them.
2009-05-19 15:24:21 +02:00
Stefan Dösinger 4bf980962a wined3d: Only declare TMP_OUT in vertex shaders. 2009-05-19 15:24:13 +02:00
Stefan Dösinger d7f282f241 WineD3D: Support more constants in ARB shaders.
GL_LIMIT - 1 for vertex programs and the GL limit in fragment programs. The
indirect addressing limitation in GLSL applies here as well.
2009-05-18 13:59:31 +02:00
Stefan Dösinger c7839112c9 wined3d: Avoid declaring helper_const in vertex programs if possible. 2009-05-18 13:59:24 +02:00
Stefan Dösinger 2cb8f42168 wined3d: Support clipplanes with GLSL.
This is the Nth attemt to make clipping work with GLSL shaders. The patch now
uses the GLSL quirk table to handle cards that need a custom varying for
gl_ClipPos, and the code is adapted to the changed state table and shader
backend system.
2009-05-18 13:59:16 +02:00
Stefan Dösinger 45563979bd wined3d: Update the bump constants after a shader change.
Since we're using local constants now, we have to update the constants after a
shader change.
2009-05-18 13:58:57 +02:00
Stefan Dösinger 3372846aa6 wined3d: Use local constants for bump parameters.
This simplifies the loading code a bit. The constants were never
designed to be at the same location in all shaders, so there's no
point in using program.env. This way we don't collide with the d3d
shader constants and its easier to work together with NP2 fixups and
other shaders.
2009-05-18 13:58:47 +02:00
Robert Key 0cea80708f wined3d: Remove HD 4800 "2048MB for X2 versions" comment. 2009-05-18 13:36:23 +02:00
Robert Key cce62569df wined3d: Fix ATI HD4800 being reported as ATI 9500. 2009-05-15 11:55:20 +02:00
Stefan Dösinger 6fe1a5daa5 wined3d: Don't use TMP_COLOR unless srgb is enabled.
This was needed unconditionally in the past to apply fog, but since we're
using the ARBfp fog defines it is only needed if an sRGB correction is done
at the end of the shader.
2009-05-15 11:45:18 +02:00
Henri Verbeet 5d63179404 wined3d: Remove some unused defines. 2009-05-15 10:25:48 +02:00
Henri Verbeet b35e469d9d wined3d: Document functions that depend on the caller to do GL locking. 2009-05-15 10:25:41 +02:00
Henri Verbeet 3022a4a73c wined3d: Add missing GL locking to check_fbo_compat(). 2009-05-15 10:25:32 +02:00
Henri Verbeet 177d883d95 wined3d: Add missing GL locking to ffp_blit_set() and ffp_blit_unset(). 2009-05-15 10:25:27 +02:00
Henri Verbeet 5bc449553b wined3d: Add missing GL locking to d3dfmt_p8_upload_palette(). 2009-05-15 10:25:22 +02:00
Stefan Dösinger 0123f81ce5 wined3d: Centralize WINED3DSPDM_SATURATE handling.
Besides the cleanup this patch will help to implement D3DSPDM_PARTIALPRECISION 
with GL_NV_vertex_program2_option / GL_NV_fragment_program_option.
2009-05-14 14:27:33 +02:00
Stefan Dösinger aeddd2da63 wined3d: Fix remaining incorrect dst register getters. 2009-05-14 14:27:25 +02:00
Stefan Dösinger bcb20ae96c wined3d: Fix a few more hardcoded pixel shader registers. 2009-05-14 14:27:19 +02:00
Stefan Dösinger 2327e316a2 wined3d: Tidy up pshader_hw_texreg2rgb and friends. 2009-05-14 14:27:14 +02:00
Stefan Dösinger 05cc344e7d wined3d: Tidy up pshader_hw_dp2add. 2009-05-14 14:27:07 +02:00
Henri Verbeet 318fb7036b wined3d: Add missing GL locking to test_pbo_functionality(). 2009-05-14 11:12:57 +02:00
Henri Verbeet 639b258200 wined3d: Add missing GL locking to IWineD3DDeviceImpl_Uninit3D(). 2009-05-14 11:12:52 +02:00
Henri Verbeet e260132701 wined3d: Add missing GL locking to set_blit_dimension() calls. 2009-05-14 11:12:46 +02:00
Henri Verbeet 1070e075e4 wined3d: Add missing GL locking to calls to FBO functions. 2009-05-14 11:12:38 +02:00
Henri Verbeet 12c4af8dd8 wined3d: Add missing GL locking to delete_glsl_program_entry() calls. 2009-05-14 11:12:30 +02:00
Stefan Dösinger ca1a979c69 wined3d: Tidy up pshader_hw_cmp. 2009-05-13 13:22:16 +02:00
Stefan Dösinger c06aa361e0 wined3d: Tidy up pshader_hw_cnd. 2009-05-13 13:22:11 +02:00
Stefan Dösinger 90526ce761 wined3d: Separate Tx tempregs from Tx varyings in ARB.
ps_1_3 uses Tx to pass in texture coordinates, but also as temporary
registers. ps_1_4 and ps_2_0 only use them for texture coordinates. This patch
gets rid of the Tx = fragment.texcoord[x] assign in all shader versions, and
doesn't even declare Tx in ps_1_4 and ps_2_0.

The <=ps_1_3 instructions know which kind of input they expect from the Tx
register, so the instruction handlers now know if they have to read the
tempreg Tx or the varying fragment.texcoord[x].
2009-05-13 13:22:04 +02:00
Stefan Dösinger fc5e511dda wined3d: Fix 1.4 pshader projection in ARB.
shader_arb_add_src_param handled DW and TXP undid it again. Remove DZ DW from
the modifiers and handle it in the instruction. DZ cannot be handled by TXP as
is, so move the .z component to .w and make it DW-like. Using SZW+TXP is
likely more efficient than the RCP, MUL, TEX we'd get if we let
shader_arb_add_src_param do the job.
2009-05-13 13:21:43 +02:00
Stefan Dösinger 45799fdc4e wined3d: Tidy up pshader_hw_tex.
Fix the indentation and replace the get_register_name with
shader_arb_get_dst_param.
2009-05-13 13:21:29 +02:00
Francois Gouget 514c5f2648 wined3d: Make surface_force_reload() static. 2009-05-13 12:45:36 +02:00
Henri Verbeet b7ac22004f wined3d: Add missing GL locking to shader_backend_t.shader_select() calls. 2009-05-13 12:01:57 +02:00
Henri Verbeet 7f14ea01c6 wined3d: Add missing GL locking to state table calls. 2009-05-13 12:01:52 +02:00
Henri Verbeet 59689262e7 wined3d: Add missing GL locking to shader_backend_t.shader_free_private() implementations. 2009-05-13 12:01:48 +02:00
Henri Verbeet b5aee04023 wined3d: Add missing GL locking to fragment_pipeline.enable_extension() implementations. 2009-05-13 12:01:43 +02:00
Henri Verbeet 91c3a5eac1 wined3d: Directly call basetexture_apply_state_changes().
All the implementations of IWineD3DBaseTexture::ApplyStateChanges() forward to
basetexture_apply_state_changes().
2009-05-13 11:55:01 +02:00
Rico Schüller 2ef751883d wined3d: Add UnregisterClass() on DLL_PROCESS_DETACH. 2009-05-12 12:33:57 +02:00
Henri Verbeet 0d446053da wined3d: Don't create more than WINED3D_MAX_FBO_ENTRIES FBO entries.
This essentially turns the FBO entry list into an LRU cache.
2009-05-12 11:18:15 +02:00
Henri Verbeet cad271f13d wined3d: Print the correct limit in a WARN(). 2009-05-12 11:18:08 +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 fef4253171 wined3d: Pass a struct wined3d_shader_register to shader_arb_get_register_name(). 2009-05-12 11:17:45 +02:00
Stefan Dösinger 601030cfa9 wined3d: Standardize pshader_hw_texkill.
Use shader_arb_get_dst_param instead of get_register_name to find the register
name. Even though this adds support for modifiers(which aren't allowed by
native), this shouldn't hurt. If an app passes in an incorrect shader it
should be caught in the frontend.
2009-05-11 12:50:37 +02:00
Stefan Dösinger 5cfbfbc8b3 wined3d: Tidy up shader_hw_rsq_rcp. 2009-05-11 12:50:22 +02:00
Stefan Dösinger da47f68522 wined3d: Simplify shader_hw_map2gl.
Most of the extra work done in the pixel shader code was not needed or
redundant. This patch unifies the two paths.
2009-05-11 12:50:01 +02:00
Stefan Dösinger 7a1f9c84f1 wined3d: Get rid of the strcat in shader_arb_add_dst_param and make it shader_arb_get_dst_param. 2009-05-11 12:49:54 +02:00
Stefan Dösinger 48c2b0d669 wined3d: Merge shader_arb_add_src_param and pshader_gen_input_modifier_line.
Mostly based on the code of pshader_gen_input_modifier_line. The space-adding
behavior of shader_arb_add_src_param was removed because the plurality of
instruction handlers passes an uninitialized buffer in and expects a register
name written to its start, and only map2gl and rcp_rsq use the space-adding
stuff. I'll change rcp_rsq in a later patch anyway. I changed the name to
shader_arb_get_src_param to reflect this behavior.
2009-05-11 12:48:35 +02:00