Alexander Dorofeyev
7c8b8e0a93
wined3d: Set isInDraw later in drawPrimitive.
...
This should fix the problem that in LoadLocation SFLAG_INTEXTURE path gl calls
can be made without activating context, due to isInDraw checks.
2008-04-08 13:20:34 +02:00
Stefan Dösinger
df2b1bea63
wined3d: Mark the SYSMEM copy outdated after releasing memory.
...
Strictly speaking this is redundant because the UnLoad before did the
job, but if we mess with the allocated memory we have to tell the
surface about that. Updating INDRAWABLE will automatically mark SYSMEM
outdated.
2008-04-08 11:59:46 +02:00
Stefan Dösinger
0de167db9e
wined3d: Put implicit surfaces into drawable on unload.
...
If we mark the sysmem copy up to date we would have to take care about
allocating it. As explained in the comment, INDRAWABLE is a saner
choice
2008-04-08 11:59:28 +02:00
Rico Schüller
a44da70d63
wined3d: Improve drawStridedInstanced().
2008-04-07 21:20:07 +02:00
Rico Schüller
73d98ccd4e
wined3d: Filter out invalid stuff in SetStreamSourceFreq().
2008-04-07 21:19:57 +02:00
Alexander Dorofeyev
65f9abc88d
wined3d: Move PreLoad to avoid calling it with gl lock held.
2008-04-07 21:18:47 +02:00
Alexander Dorofeyev
7f2257ca55
wined3d: Add device->isInDraw checks in LoadLocation.
...
Prevents calling ActivateContext while holding gl lock, e.g. when preloading
texture in sampler().
2008-04-07 21:18:36 +02:00
Alexander Dorofeyev
71ca80355d
wined3d: move ENTER_GL in IWineD3DDeviceImpl_Init3D.
2008-04-07 21:18:28 +02:00
Alexander Dorofeyev
b949190dcd
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DOcclusionQueryImpl_Issue.
2008-04-07 21:18:18 +02:00
Alexander Dorofeyev
93fefdf94d
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DEventQueryImpl_Issue.
2008-04-07 21:18:12 +02:00
Alexander Dorofeyev
84553fd864
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DEventQueryImpl_GetData.
2008-04-07 21:18:06 +02:00
Alexander Dorofeyev
2711b84601
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DOcclusionQueryImpl_GetData.
2008-04-07 21:18:00 +02:00
Alexander Dorofeyev
f24289e49a
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DQueryImpl_Release.
2008-04-07 21:17:55 +02:00
Alexander Dorofeyev
5ccf91b705
wined3d: LEAVE_GL when exiting with error in tesselate_rectpatch.
2008-04-07 21:17:49 +02:00
Alexander Dorofeyev
2157c7d76c
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DDeviceImpl_ResourceReleased.
2008-04-07 21:17:37 +02:00
Alexander Dorofeyev
a2017f4f21
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DDeviceImpl_ColorFill.
2008-04-07 21:17:31 +02:00
Alexander Dorofeyev
7c261553d0
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DDeviceImpl_Uninit3D.
2008-04-07 21:17:26 +02:00
Alexander Dorofeyev
29b38bc886
wined3d: Implement CONVERT_RGB32_888 conversion.
2008-04-07 21:17:15 +02:00
Alexander Dorofeyev
2f9e8a901c
wined3d: Don't copy the extra line.
...
biSizeImage has an extra line added to it, and passing it to memcpy can cause a
crash.
2008-04-07 21:17:06 +02:00
Francois Gouget
8a18e0e43a
Assorted spelling fixes.
2008-04-07 13:36:18 +02:00
Roderick Colenbrander
f04d870a8d
wined3d: Remove a PBO when a converted surface is detected.
...
This can happen e.g. when suddenly color keying is activated and at
some stages we don't know if we will need conversion at PBO creation
time.
2008-04-07 12:05:54 +02:00
Roderick Colenbrander
0efefef34b
wined3d: Use the render target its palette when performing a texture copy as the texture doesn't hold one.
2008-04-07 12:05:39 +02:00
Allan Tong
a68637b59b
wined3d: Call ActivateContext before any gl call in IWineD3DSurfaceImpl_Release.
2008-04-04 11:43:50 +02:00
Stefan Dösinger
03bacf7247
wined3d: Advertise shader emulation of bumpmap formats.
2008-04-04 11:05:07 +02:00
Stefan Dösinger
ffbc96b43c
wined3d: Advertize postpixelshader blending for surfaces.
2008-04-04 11:04:58 +02:00
Stefan Dösinger
ddf52dda15
wined3d: Deactivate GL_FRAGMENT_SHADER_ATI before deactivating a context.
...
Mesa has a bug that causes a crash due to a NULL pointer dereference
with the R200 driver when making a context current that has
GL_FRAGMENT_SHADER_ATI enabled. This patch works around this bug by
making sure that GL_FRAGMENT_SHADER_ATI is disabled before deactivating
a context, and reactivates it afterwards. The context manager keeps
GL_ATI_FRAGMENT_SHADER generally enabled, except if the context is in 2D
blit mode.
2008-04-03 12:02:24 +02:00
Stefan Dösinger
20e63160df
wined3d: Initialize some ARB shader output parameters.
2008-04-03 12:01:32 +02:00
Alexander Dorofeyev
d6ba069d9e
wined3d: Improve detection of device palette change.
2008-04-03 11:31:57 +02:00
Alexander Dorofeyev
1c89795438
wined3d: Support index in alpha in BltOverride colorfill codepath.
...
Fixes a failure in ddraw p8_primary_test when running with opengl ddraw renderer.
2008-04-03 11:31:43 +02:00
Alexander Dorofeyev
8ec63a9cf7
wined3d: Remove ENTER_GL/LEAVE_GL in IWineD3DCubeTextureImpl_PreLoad.
2008-04-03 11:31:27 +02:00
Alexander Dorofeyev
9b04822170
wined3d: Remove ENTER_GL/LEAVE_GL in IWineD3DTextureImpl_PreLoad.
2008-04-03 11:31:19 +02:00
Alexander Dorofeyev
b54553a253
wined3d: Avoid calling LoadTexture with gl lock held in IWineD3DSurfaceImpl_PreLoad.
...
Needed to prevent ActivateContext being called while holding gl lock.
2008-04-03 11:31:09 +02:00
Alexander Dorofeyev
1e6f02ed2b
wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DSurfaceImpl_Release.
2008-04-03 11:30:55 +02:00
Alexander Dorofeyev
088c34ec1c
wined3d: Add ENTER_GL/LEAVE_GL in surface_allocate_surface.
2008-04-03 11:30:47 +02:00
Alexander Dorofeyev
d5b400307b
wined3d: Add ENTER_GL/LEAVE_GL in surface_bind_and_dirtify.
2008-04-03 11:30:38 +02:00
Stefan Dösinger
b1d8af7926
wined3d: Update copyright lines.
2008-04-02 20:22:42 +02:00
Stefan Dösinger
bd68237096
wined3d: Implement TSSARGTEMP with register combiners.
2008-04-02 20:07:40 +02:00
Stefan Dösinger
0f1c2370b1
wined3d: Do not report pixel shaders if not supported.
2008-04-02 20:07:30 +02:00
Stefan Dösinger
287f60a2b2
wined3d: Implement D3DTA_TEMP in the GL_ATI_fragment_shader codepath.
2008-04-02 20:07:19 +02:00
Stefan Dösinger
8f9a14e312
wined3d: Prepare the atifs shader generator for temp register support.
2008-04-02 20:07:03 +02:00
Stefan Dösinger
ab86a4e963
wined3d: Catch D3DUSAGE_AUTOGENMIPMAP and D3DUSAGE_RENDERTARGET combos.
2008-04-01 20:31:59 +02:00
Stefan Dösinger
a29a229324
wined3d: Refuse 3D initialization without opengl.
2008-04-01 20:31:44 +02:00
Stefan Dösinger
8673be0bd7
wined3d: Return a fake pixel format if gl is not loaded.
2008-04-01 20:31:37 +02:00
Stefan Dösinger
9e831a8733
wined3d: Create a fake non-gl adapter.
2008-04-01 20:31:30 +02:00
Roderick Colenbrander
4120188f99
wined3d: Request a pixel format with alpha support in case of P8 render targets.
2008-03-31 13:01:24 +02:00
Roderick Colenbrander
76014205de
wined3d: Fix a postpixelshader_blending bug.
2008-03-31 12:14:33 +02:00
Roderick Colenbrander
c0be6047ef
wined3d: Also move the rendertarget capability to the formats table.
2008-03-29 10:31:50 +01:00
Roderick Colenbrander
ef73fe5d47
wined3d: Add a depthstencil flag to the formats table and make use of it in CheckDepthStencilCapability.
2008-03-29 10:31:36 +01:00
Roderick Colenbrander
e1bf1cd640
wined3d: Make the filtering capability of a format a flag in the formats table.
2008-03-29 10:31:18 +01:00
Roderick Colenbrander
69a40127c6
wined3d: Add D3DUSAGE_QUERY_PIXELSHADER_BLENDING to CheckDeviceFormat.
2008-03-28 15:50:36 +01:00
Roderick Colenbrander
4eaa424c79
wined3d: Initial post pixelshader blending support. [attempt 2].
...
For each pixel format we store a flag in the table whether it supports
post pixelshader blending. Before applying blending or during a
context switch we verify that blending is turned off for the
format. In case of R32F this gave a 5-6x performance boost (without
filtering and software conversion).
2008-03-28 15:50:24 +01:00
Stefan Dösinger
1fdc0ee811
wined3d: Remove some debug TRACE stuff.
2008-03-28 14:51:25 +01:00
Stefan Dösinger
f63ce1c489
wined3d: Inherit from the proper state table in atifs.
2008-03-28 14:49:38 +01:00
Stefan Dösinger
f761b90801
wined3d: Free heapMemory, not allocatedMemory when adjusting the surface.
2008-03-27 11:19:05 +01:00
Alexander Dorofeyev
165970992a
wined3d: Make device palettes dynamically allocated.
2008-03-27 11:09:06 +01:00
Stefan Dösinger
39e2cbc5d5
wined3d: Enable D3DFMT_V8U8 with GL_ATI_fragment_shader.
2008-03-25 19:50:55 +01:00
Stefan Dösinger
9b79bc5e31
wined3d: Implement env bump mapping in the atifs ffp replacement.
2008-03-25 19:50:43 +01:00
Stefan Dösinger
4640be8dc8
wined3d: Fragment processing using GL_ATI_fragment_shader.
...
This adds code for handling fixed function fragment processing with the
GL_ATI_fragment_shader extension. This is a sort-of programmable
interface for fragment processing at the level of shader model 1.4 in
d3d. This code is of use on r200, r250 and r280 cards(radeon 8500 to
9200) which do not support GL_ARB_fragment_program, but support pixel
shader 1.4 on Windows. This code is somewhat a counterpart to the
existing fragment processing code using GL_NV_register_combiners and
GL_NV_texture_shader.
2008-03-25 19:50:32 +01:00
Stefan Dösinger
a440051016
wined3d: Add a shader DLL init callback.
2008-03-25 19:49:17 +01:00
Stefan Dösinger
18e16f4e66
wined3d: Add GL_ATI_fragment_shader.
2008-03-25 19:48:35 +01:00
Stefan Dösinger
28fdebe404
wined3d: Alloc / free shader private data and blt stuff in Init3D/Uninit3D.
2008-03-25 19:48:24 +01:00
Stefan Dösinger
ac57b4e2f5
wined3d: Free shader private data on reset.
...
Since the shader backend implementations might track opengl resources in
their private data inform them about reset calls. For example, the atifs
backend keeps track of the replacement shaders, which are lost during an
opengl context recreation.
2008-03-25 19:48:14 +01:00
Stefan Dösinger
ee7e149998
wined3d: Move shader caps setting into the arb and glsl shader backends.
2008-03-25 19:39:23 +01:00
Stefan Dösinger
5ab5202e0f
wined3d: Set shader specific caps in the shader backend.
...
The whole control structures in directx.c get terribly confusing with
the various codepaths for texturing and different shader
implementations. It is also hard to reflect the shader model
decisions this way too. This patch moves the shader specific parts of
the caps code into the shader backend where we can set our caps
dependent of the shader model decisions and without complex caps flag
checks.
2008-03-25 19:39:11 +01:00
Stefan Dösinger
8869c0f147
d3d: De-pointerize the WINED3DCAPS structure.
2008-03-25 19:36:38 +01:00
Stefan Dösinger
6d5f562dcf
wined3d: Move the shader backend selection into a separate function.
2008-03-25 19:36:13 +01:00
Stefan Dösinger
a66fb40d83
wined3d: Move shader generation into the shader backend.
...
Generating the shader ID and parts of the shader prolog and epilog was
done by the common vertexshader.c / pixelshader.c, which is ugly.
This patch doesn't get rid of all the uglyness, somewhen we'll still
have to sort out the relationship of [arb|glsl]_generate_shader and
[arb|glsl]_generate_declarations.
2008-03-25 19:35:58 +01:00
Stefan Dösinger
84258723f9
wined3d: Make the state table a property of the shader backend.
2008-03-25 19:35:32 +01:00
Roderick Colenbrander
eaa1ff0d2c
wined3d: Always report D16 as Windows drivers report it on all cards (likely using emulation).
2008-03-25 16:14:03 +01:00
Alexander Dorofeyev
f2e03d6c3f
wined3d: Don't store primary surface palette in device palettes.
2008-03-25 11:53:55 +01:00
Alexander Dorofeyev
9b913b3b79
wined3d: Don't use device palettes in RealizePalette.
2008-03-25 11:53:47 +01:00
Alexander Dorofeyev
13ce219235
wined3d: Don't use device palettes in GetDC.
2008-03-25 11:53:39 +01:00
Alexander Dorofeyev
85fd313046
wined3d: Don't use device palettes in read_from_framebuffer.
2008-03-25 11:53:24 +01:00
Alexander Dorofeyev
16da594354
wined3d: Fix comment.
2008-03-25 11:53:01 +01:00
Alexander Dorofeyev
3d2bdf52cd
wined3d: Handle zero primitive count.
2008-03-24 20:40:13 +01:00
Roderick Colenbrander
cb9252db36
wined3d: Fix a typo in CheckSrgbWriteCapability. We support both X8R8G8B8 and A8R8G8B8.
2008-03-24 20:39:50 +01:00
Roderick Colenbrander
9123e8f374
wined3d: Add more debug code to CheckDeviceFormat.
2008-03-24 20:39:37 +01:00
Roderick Colenbrander
690f496bd4
wined3d: We want to compare the old and the new format and not the old with the old.
2008-03-24 13:27:14 +01:00
Philip Nilsson
1110f17581
wined3d: Initialize maxAttribs in case it isn't changed by glGetIntegerv.
2008-03-24 13:26:20 +01:00
Roderick Colenbrander
e749825793
wined3d: CheckTextureCapability returns TRUE for V8U8.
2008-03-24 12:08:34 +01:00
Roderick Colenbrander
3771341774
wined3d: Add a missing break to blt_to_drawable.
2008-03-24 12:08:12 +01:00
Roderick Colenbrander
856af1b5d7
wined3d: Add srgb write support to CheckDeviceFormat.
2008-03-22 12:23:23 +01:00
Roderick Colenbrander
9e9ef6238a
wined3d: Remove unneeded code in CheckDeviceFormat.
...
All these checks are done during the capability checks which are
performed under the resource type checks.
2008-03-22 11:46:25 +01:00
Roderick Colenbrander
5d151c0ffc
wined3d: Don't continue with CheckDeviceFormat when the texture format isn't around.
...
It is legal to pass Usage=0 to CheckDeviceFormat and in both this case
and in the case a format isn't available UsageCaps would be 0 and a
format would be reported available.
2008-03-22 11:45:58 +01:00
Roderick Colenbrander
460f0d1608
wined3d: Return WINED3DERR_NOTAVAILABLE when cubemapping isn't supported.
2008-03-22 11:45:41 +01:00
Roderick Colenbrander
616944ae7e
wined3d: Add reporting of D3DRTYPE_VOLUME capabilties.
...
We assume it has the same capabilities as VOLUMETEXTURE. MSDN is very
vague on this topic. Intel/Nvidia/ATI drivers seem to offer nearly the
same caps on both, so do that too.
2008-03-22 11:45:31 +01:00
Roderick Colenbrander
6f3127291f
wined3d: When volume textures aren't around (GL_EXT_texture3D not supported) return WINED3DERR_NOTAVAILABLE.
2008-03-22 11:44:11 +01:00
Roderick Colenbrander
eef51ed4ca
wined3d: We don't offer index/vertex buffer caps. Neither do Windows drivers (at least Nvidia, Ati and Intel).
2008-03-22 11:14:37 +01:00
Roderick Colenbrander
51a8162330
wined3d: Check pixel formats of the same pixel type.
2008-03-21 15:19:05 +01:00
Andrew Talbot
19c105c79c
wined3d: Assign to structs instead of using memcpy.
2008-03-21 11:24:05 +01:00
Luis Javier Merino
3bb1ea3d34
wined3d: BltFast dealing correctly with overlapping src and dest.
2008-03-20 14:27:36 +01:00
Roderick Colenbrander
fd71421ebe
wined3d: Report software processing in CheckDeviceFormat.
2008-03-19 17:21:59 +01:00
Roderick Colenbrander
30a3bc2651
wined3d: Add dynamic locking support to CheckDeviceFormat.
2008-03-19 17:21:47 +01:00
Roderick Colenbrander
7fd87f10cd
wined3d: There is no need for the !Usage checks at the start of the resource type checks.
...
The return-path of the code will handle this properly and this also
ensures that the R8G8B8 dxVersion test is reached.
2008-03-19 17:21:34 +01:00
Francois Gouget
304b415284
Assorted spelling fixes.
2008-03-19 11:21:27 +01:00
Roderick Colenbrander
0e9d02ded4
wined3d: Add correct autogenmipmap support.
2008-03-18 11:17:42 +01:00
Roderick Colenbrander
aa46edd60c
wined3d: Add a function which checks the filtering capabilities for a format.
2008-03-18 11:17:31 +01:00
Roderick Colenbrander
2f1e01bbe3
wined3d: Put vertex texture capability checking in its own function.
2008-03-18 11:17:15 +01:00
Roderick Colenbrander
32a32d82c4
wined3d: Put the SRG read capability check in its own function.
2008-03-18 11:17:01 +01:00
Roderick Colenbrander
4e66c9c990
wined3d: Add a function which checks the legacy bump mapping capabilities.
2008-03-18 11:16:48 +01:00