Commit Graph

816 Commits

Author SHA1 Message Date
Józef Kucia f6bd191385 wined3d: Introduce wined3d_gl_limits_get_uniform_block_range().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-22 22:16:34 +09:00
Matteo Bruni 1755be42f5 wined3d: Cleanup state_clipping() a bit.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-03 00:10:48 +09:00
Józef Kucia 4dfd79d336 wined3d: Use pure integer vertex attributes for SM4+ shaders.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-01 22:12:27 +09:00
Henri Verbeet 8ae3a9b624 wined3d: Introduce a helper function to allocate arrays.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-24 16:19:01 +09:00
Matteo Bruni f5dc7a43b0 wined3d: Fixup vertex position in geometry shaders.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-23 14:07:41 +09:00
Henri Verbeet f3c155cc56 wined3d: Merge drawStridedSlow() and drawStridedSlowVs().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-07 12:57:34 +09:00
Józef Kucia a5b810b0b3 wined3d: Print "state_id" for undefined states.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-05 00:06:42 +09:00
Matteo Bruni 73f50876ac wined3d: Don't try to set line stippling on core profile contexts.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-29 19:32:04 +09:00
Józef Kucia 53f4cc1a9e wined3d: Allow draw calls without color attachments.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-22 23:51:32 +09:00
Józef Kucia c099f3a060 wined3d: Introduce debug_color().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-15 22:45:42 +09:00
Miklós Máté e29aaca018 wined3d: Warn only once about unsupported wrap state.
Signed-off-by: Miklós Máté <mtmkls@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-15 10:49:33 +09:00
Henri Verbeet edb3ea66a0 wined3d: Replace D3DCOLORTOGLFLOAT4 with an inline function.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-09 18:39:53 +09:00
Paul Gofman 749d5a577b wined3d: Bind default sampler object when setting sampler state with no texture.
When sampler state was applied and no stage texture was present in
state, no glBindSampler was issued for the stage after dummy texture was
bound, and previously bound sampler was still active. This could result
in undefined behaviour, especially if previously bound sampler was a
shadow sample (this caused warnings from Nvidia driver).

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-24 10:31:57 +09:00
Henri Verbeet 553149a049 wined3d: Ignore wined3d_sampler_desc.srgb_decode if WINED3D_SRGB_READ_WRITE_CONTROL is not set.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-12 23:07:28 +09:00
Józef Kucia 1769ea38e6 wined3d: Add support for separate sRGB formats.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 00:37:25 +09:00
Gerald Pfeifer f5a8580589 wined3d: Fix incorrect indentation of several break statements in in set_tex_op.
Signed-off-by: Gerald Pfeifer <gerald@pfeifer.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-12 16:03:36 +09:00
Alex Henrie 32d73eab5c wined3d: Avoid double initialization.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-03 20:03:41 +01:00
Matteo Bruni 0985606be4 wined3d: Flat shading emulation for core contexts.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-13 22:54:23 +09:00
Matteo Bruni c5b2d3f10c wined3d: Handle WINED3D_SHADE_PHONG the same as WINED3D_SHADE_GOURAUD.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-13 22:54:01 +09:00
Henri Verbeet 2773b27bb1 wined3d: Use unsigned mask constants in shifts. 2015-08-26 23:53:22 +09:00
Stefan Dösinger 34d8b987c4 wined3d: Try to detect the polygon offset scale value.
FEAR draws the same geometry twice, the second time using zfunc=equal.
In both cases it sets a huge depth bias of -0.5, presumably to get
better precision for the fragile Z comparison. The GL polygon offset we
set ends up being so large that it pulls the geometry into the negative
Z range. It isn't clipped (or no longer, older NV drivers probably had a
separate bug there), but the Z value gets clamped to 0.0 in the first
draw and doesn't match the incoming Z in the second draw.
2015-07-30 23:50:57 +02:00
Matteo Bruni f2989a2522 wined3d: Only install emulation wrappers when required. 2015-07-28 13:41:48 +02:00
Józef Kucia 1f680c52fe wined3d: Implement vertex blending in glsl_vertex_pipe. 2015-07-03 16:51:34 +09:00
Józef Kucia 1fc4a17175 wined3d: Show fixme about unimplemented vertex processing once. 2015-07-03 16:51:29 +09:00
Matteo Bruni 498e55a182 wined3d: Make use of the EXT_BLEND_SUBTRACT flag.
MSDN mentions a fallback to D3DBLENDOP_ADD if the selected blendop
is not supported. In theory it would be nice to write a test for that but
I don't think this is particularly important and moreover hardware
without that cap seems hard to come by (i.e. I have none)...
2015-06-17 20:01:20 +09:00
Matteo Bruni 35a2406900 wined3d: Drop WINED3D_RS_TEXTUREPERSPECTIVE handling.
The hint is not supported on core profiles. It's not guaranteed to do
anything on compatibility profile either: "The interpretation of hints is
implementation dependent. An implementation may ignore them entirely."

This state was only available on D3D 7 and below (and not guaranteed to
do anything there either, according to older DX SDK docs).
If necessary we could implement it via the GLSL 1.50 "noperspective"
interpolation qualifier, which is what we need to use for the equivalent
D3D10 feature anyway.
2015-06-17 20:01:20 +09:00
Matteo Bruni 4189d29776 wined3d: Avoid the builtin GLSL vertex attributes. 2015-06-12 21:23:12 +09:00
Matteo Bruni b02a166cc8 wined3d: Introduce a get_fog_start_end() function. 2015-06-05 16:53:16 +09:00
Matteo Bruni 92fbe333d0 wined3d: Handle point sprites with PS 3.0. 2015-06-05 16:52:29 +09:00
Matteo Bruni e8cb3bdba5 wined3d: Always enable GL_PROGRAM_POINT_SIZE in the GLSL backend.
Core contexts don't support clamping the point size to GL_POINT_SIZE_MIN
/ GL_POINT_SIZE_MAX.  Incidentally this mostly fixes per-vertex point
sizes for vertex shader version 1 and 2.
2015-06-03 19:52:14 +09:00
Matteo Bruni 953a45303c wined3d: Introduce a get_pointsize() function. 2015-05-29 16:44:18 +09:00
Matteo Bruni 36520c3e9d wined3d: Introduce a get_pointsize_minmax() function. 2015-05-29 16:44:13 +09:00
Matteo Bruni b551da8eef wined3d: Remove point size scaling hack.
Not sure how this was supposed to work, according to the GL spec the
clamping to POINT_SIZE_RANGE happens after the scaling is applied.
2015-05-29 16:44:05 +09:00
Matteo Bruni 28343db208 wined3d: Don't use the builtin FFP uniforms for the lights.
While at it, use D3D-like uniforms for the light parameters and
(consequently) implement range and proper D3D spotlights support.
2015-04-28 20:02:23 +09:00
Matteo Bruni e226e7593a wined3d: Use struct wined3d_vec4 to store the light position and direction. 2015-04-28 20:02:21 +09:00
Matteo Bruni 540130bfa9 wined3d: Store the directional light direction in the lightDirn field.
It's only an implementation detail that the direction needs to be passed
to the fixed function GL pipeline as GL_POSITION.
2015-04-28 20:02:18 +09:00
Matteo Bruni 6984ca7f46 wined3d: Don't use the builtin FFP uniforms for texture transformation matrices. 2015-04-27 15:07:06 +09:00
Stefan Dösinger 4fbaab2020 wined3d: Shadow format flags in wined3d_rendertarget_view. 2015-04-23 20:43:20 +09:00
Stefan Dösinger 9076612e2d wined3d: Shadow format flags in the resource. 2015-04-22 23:24:41 +09:00
Henri Verbeet a37099e132 wined3d: Bind sampler objects to the correct texture stage.
On current hardware this generally only makes a difference for vertex
textures. This fixes a regression introduced by commit
c6232e1d11.
2015-04-15 22:21:58 +09:00
Stefan Dösinger 382fa588a9 wined3d: Handle color key dirtification in wined3d_cs_exec_set_texture. 2015-04-15 22:21:57 +09:00
Stefan Dösinger c5c7137212 wined3d: Simplify alpha test and color keying in GLSL. 2015-04-10 21:44:13 +09:00
Stefan Dösinger 5c7707dc77 wined3d: Move alpha test states to the fragment pipeline.
This will allow some color keying cleanups. For Core Contexts we'll have
to emulate alpha testing in shaders anyway.
2015-04-10 21:44:01 +09:00
Stefan Dösinger 5d51c97d07 wined3d: Implement color keying in the glsl fragment pipeline. 2015-04-10 21:43:31 +09:00
Stefan Dösinger 82db5954c4 wined3d: Set color keys through the command stream. 2015-04-10 21:42:41 +09:00
Matteo Bruni 05757794a0 wined3d: Don't use the builtin FFP uniform for the projection matrix. 2015-03-27 20:40:38 +09:00
Stefan Dösinger 239e8cad7c wined3d: Add per-context private data for fragment pipelines. 2015-03-24 20:06:15 +09:00
Henri Verbeet 1b08196c5a wined3d: Implement d3d10 style instance data step rates. 2015-03-24 17:41:06 +09:00
Matteo Bruni 74cda79ac3 wined3d: Introduce a get_texture_matrix() function. 2015-03-23 22:59:20 +09:00
Matteo Bruni 2d270f31c6 wined3d: Introduce a get_projection_matrix() function.
Notice that I'm using floats instead of doubles in the new function,
mostly to be able to use struct wined3d_matrix and multiply_matrix().
At a rough estimate the precision should still be good enough.
2015-03-23 22:59:19 +09:00
Matteo Bruni 65c8c40b18 wined3d: Use a separate STATE_VIEWPORT state handler in the GLSL pipeline. 2015-03-23 22:59:18 +09:00
Henri Verbeet ba396e4212 wined3d: Simplify the wined3d_matrix structure. 2015-03-20 21:32:46 +09:00
Matteo Bruni 9811d85141 wined3d: Don't use the builtin FFP uniform for the modelview matrix. 2015-03-19 20:56:59 +09:00
Matteo Bruni 425dc69fef wined3d: Use a separate STATE_TRANSFORM(WINED3D_TS_VIEW) state handler in the GLSL pipeline. 2015-03-19 20:56:56 +09:00
Matteo Bruni 99f3e835ac wined3d: Use a separate STATE_VDECL state handler in the GLSL pipeline.
It's mostly a copy of vertexdeclaration() from state.c, with a few
differences due to the new function being private to the GLSL backend
(e.g. d3d_info.vs_clipping is known to be TRUE) and the fragment fog
update part being split out.
2015-03-19 20:56:50 +09:00
Matteo Bruni 50861156e2 wined3d: Introduce a get_modelview_matrix() function. 2015-03-19 20:56:45 +09:00
Matteo Bruni 2f804307bd wined3d: Drop a few unnecessary &x[0]. 2015-03-02 13:47:52 +09:00
Matteo Bruni aca8ab91eb wined3d: Use the core version of the INCR_WRAP and DECR_WRAP tokens. 2015-02-25 20:35:28 +09:00
Stefan Dösinger 9b3ab8a6f4 wined3d: Set z = 0.0 via the projection matrix instead of depth clamping.
This works on cards that don't implement ARB_depth_clamp like r500
cards. Note that texturing is influenced by position.w, not position.z.
2015-02-12 22:20:05 +09:00
Matteo Bruni e192939652 wined3d: Use the core version of GL vertex attribute functions where possible. 2015-01-23 12:02:33 +01:00
Matteo Bruni 584892b692 wined3d: Properly initialize the last two components of R16G16_SINT attributes. 2015-01-23 12:02:28 +01:00
Matteo Bruni 270431c220 wined3d: Don't normalize R8G8B8A8_UINT attributes. 2015-01-22 13:37:55 +01:00
Matteo Bruni 8ddb7e32f8 wined3d: Add separate stencil state setup via GL 2.0+ core functions. 2015-01-22 13:37:53 +01:00
Matteo Bruni 915e0ef0cf wined3d: Always use the core version of the glPointParameteri function.
The state function depends on GL 2.0+ so it's unnecessary to
check for NV_POINT_SPRITE.
2015-01-20 16:09:01 +01:00
Henri Verbeet ca06f960ed wined3d: Use the same flags for wined3d_texture_set_color_key() and the "color_key_flags" field it sets.
This fixes a regression introduced by commit a8ab569415.
2015-01-19 14:31:51 +01:00
Henri Verbeet 2e5abc156a wined3d: Implement WINED3DSIH_SAMPLE in the GLSL shader backend. 2015-01-19 14:31:32 +01:00
Henri Verbeet c6232e1d11 wined3d: Create GL sampler objects for wined3d sampler objects. 2015-01-15 17:24:43 +01:00
Henri Verbeet 5231113fc7 wined3d: Replace wined3d_texture_apply_state_changes() with wined3d_texture_apply_sampler_desc(). 2015-01-15 17:24:38 +01:00
Matteo Bruni 7e169d43c5 wined3d: Use the core glColorMaski function. 2015-01-15 11:44:22 +01:00
Matteo Bruni 79a0dece8b wined3d: Use the core version of the gl*Buffer* functions. 2015-01-15 11:44:20 +01:00
Matteo Bruni 3ccb66f472 wined3d: Use the core version of the glBlend* functions. 2015-01-09 11:49:37 +01:00
Matteo Bruni 6eb242a275 wined3d: Handle half-float attributes in load_numbered_arrays().
Fixes a bunch of graphic glitches in WildStar on Nvidia.
2014-08-28 15:30:23 +02:00
Henri Verbeet 07985a8c38 wined3d: Use rendertarget views for depth/stencil buffers instead of surfaces.
I don't think the difference between d3d10 depth/stencil and rendertarget
views is large enough to justify a separate type. Unfortunately that does make
the name "wined3d_rendertarget_view" slightly awkward.
2014-08-22 12:53:11 +02:00
Henri Verbeet b005ad6f90 wined3d: Use rendertarget views for color output instead of surfaces. 2014-08-21 12:24:42 +02:00
Henri Verbeet d079066f5d wined3d: Get rid of the get_drawable_size() callback in struct wined3d_surface. 2014-08-04 14:23:49 +02:00
Henri Verbeet 80bca9bc9c wined3d: Add constant buffer support to the GLSL shader backend. 2014-08-04 14:23:29 +02:00
Henri Verbeet 0ef760ef82 wined3d: Make vp_ffp_states static. 2014-07-14 19:26:19 +02:00
Henri Verbeet 4710c4b51a wined3d: Store color keys in textures instead of in surfaces. 2014-01-09 15:50:39 +01:00
Henri Verbeet 6b90248aec wined3d: Merge texture2d_bind() and texture3d_bind() into wined3d_texture_bind(). 2013-11-21 13:36:29 +01:00
Henri Verbeet 3d226df3b9 wined3d: Avoid initializing some more variables. 2013-10-29 10:33:58 +01:00
Frédéric Delanoy 5c1ea9bff1 wined3d: Avoid initializing some variables. 2013-10-14 10:45:24 +02:00
Henri Verbeet c228ffbaf0 wined3d: Unify shader binding points. 2013-10-10 10:44:53 +02:00
Henri Verbeet 079b6d4c11 wined3d: Unify the shader state IDs. 2013-10-09 11:11:07 +02:00
Henri Verbeet 8644b62726 wined3d: Move lowest_disabled_stage to the context. 2013-10-07 14:44:35 +02:00
Stefan Dösinger bbfca4863c wined3d: Store the instance count in the context structure. 2013-09-16 13:06:03 +02:00
Stefan Dösinger 112617f00b wined3d: Move tex_unit_map and friends into the context. 2013-09-16 13:05:58 +02:00
Stefan Dösinger d8c43aabf7 wined3d: Move the decoded stream info into the context. 2013-09-12 17:48:14 +02:00
Stefan Dösinger 87f931dc64 wined3d: Only invalidate STATE_INDEXBUFFER for the current context in buffer_get_sysmem(). 2013-09-09 22:10:00 +02:00
Henri Verbeet b5e0c5d052 wined3d: Get rid of some leftover comments referring to the GL lock. 2013-09-02 18:02:26 +02:00
Henri Verbeet 69e1100c0c wined3d: Handle NP2 fixup updates in shader_load_constants(). 2013-08-21 12:13:56 +02:00
Henri Verbeet 62859daf0b wined3d: Avoid looking up shaders for shader stages that didn't change. 2013-08-21 12:13:56 +02:00
Henri Verbeet c1a7323fac wined3d: Avoid some redundant state_pscale() calls. 2013-08-19 12:53:21 +02:00
Henri Verbeet 37d1e8b79c wined3d: Try to avoid redundant constant updates.
This gives a minor performance improvement. For example, in 3DMark03 Game Test
1 this gives about a 4% improvement, in the Counter Strike: Source stress test
it's about 1%. (NVIDIA GF9600M, Intel T9550, 1024x768).
2013-08-16 11:55:24 +02:00
Stefan Dösinger b648b74191 wined3d: Pass fogstart==fogend to GL in fog table mode. 2013-06-19 20:09:53 +02:00
Henri Verbeet ffc9f535eb wined3d: Handle pre-transformed vertices in the GLSL vertex pipe.
This also avoids a fallback to drawStridedSlow().
2013-06-14 11:46:31 +02:00
Henri Verbeet 8a7ddfbb53 wined3d: Don't use state_colormat() with the GLSL vertex pipe.
None of the code in there should be needed for the GLSL vertex pipe, and the
"untracked materials" counter in particular will trigger an unnecessary
fallback to drawStridedSlow().
2013-06-14 11:46:27 +02:00
Francois Gouget 145c417e98 wined3d: Make state_fog_vertexpart() static. 2013-06-06 11:47:02 +02:00
Henri Verbeet 74c5a22daa wined3d: Only invalidate the current ffp vertex shader if the light type changed.
As opposed to any time a light parameter changed.
2013-05-29 12:12:33 +02:00
Henri Verbeet bdd97858bf wined3d: Only write gl_ClipVertex if clipping is enabled in shader_glsl_generate_ffp_vertex_shader(). 2013-05-29 12:12:32 +02:00
Henri Verbeet 1c2392ddb0 wined3d: Only write gl_PointSize for point primitives in shader_glsl_generate_ffp_vertex_shader(). 2013-05-29 12:12:32 +02:00