Commit Graph

318 Commits

Author SHA1 Message Date
Henri Verbeet cee8e9d881 wined3d: Select the shader backend during adapter initialization. 2010-02-02 14:11:02 +01:00
Henri Verbeet fb21551b2d wined3d: Select the fragment pipeline during adapter initialization. 2010-02-02 14:10:56 +01:00
Henri Verbeet 9bbccb7f80 wined3d: Add a debug function for state names. 2010-01-29 13:30:05 +01:00
Henri Verbeet 08c2a23599 wined3d: Just use the GL 1.1 texture format constants.
We assume GL 1.1 is available everywhere else.
2010-01-28 11:07:48 +01:00
Henri Verbeet 98568f0ba1 wined3d: Add support for ARB_vertex_array_bgra. 2010-01-26 12:08:27 +01:00
Henri Verbeet b3defd4c80 wined3d: Rename "wineD3DDevice" to "device". 2009-12-10 11:54:47 +01:00
Henri Verbeet e4d8a3f309 wined3d: Move the various backend selection utility functions to utils.c. 2009-11-18 11:16:43 +01:00
Henri Verbeet 7676c66431 wined3d: WINED3DFMT_FLAG_GETDC is a basic format flag.
It has nothing to do with OpenGL, so shouldn't be in "gl_formats_template".
This fixes a regression introduced by e1469961d4.
2009-11-17 15:14:54 +01:00
Henri Verbeet db2273652d wined3d: Add a format table for basic format flags like WINED3DFMT_FLAG_FOURCC. 2009-11-17 15:14:54 +01:00
Henri Verbeet bf10dbe8a6 wined3d: Map D3DFMT_D24S8 to WINED3DFMT_D24_UNORM_S8_UINT.
The internal order of the depth and stencil bits is unspecified since the
format isn't lockable.
2009-10-30 11:28:52 +01:00
Henri Verbeet 111307dfba wined3d: Get rid of the GL_SUPPORT macro. 2009-10-29 13:09:33 +01:00
Henri Verbeet 48e03bc189 wined3d: Introduce a separate structure for various OpenGL implementation limits. 2009-10-29 13:09:27 +01:00
Henri Verbeet 2447c8bc3e wined3d: Store PCI IDs in wined3d_driver_info instead of wined3d_gl_info. 2009-10-27 10:54:50 +01:00
Henri Verbeet 6be41fd59a wined3d: Get rid of GL_LIMITS. 2009-10-22 10:46:05 +02:00
Henri Verbeet 42eb516d96 wined3d: Free the adapter's format info in IWineD3DImpl_Release() (Valgrind). 2009-10-21 16:05:57 +02:00
Henri Verbeet 47c84f4f7f wined3d: Use the DXGI naming convention for all formats. 2009-09-25 15:15:44 +02:00
Henri Verbeet ec97383f6f wined3d: Add support for ARB_framebuffer_object. 2009-09-23 12:37:00 +02:00
Stefan Dösinger e1469961d4 wined3d: Test and fix ddraw and d3d9 GetDC differences.
The MSDN is not totally correct: A8R8G8B8 and A1R5G5B5 also allow GetDC. The
main differences that have to be filtered out in d3d9.dll are GetDC on
A8B8G8R8, X8B8G8R8 and P8.
2009-09-08 13:04:52 +02:00
Stefan Dösinger d6547c535b wined3d: Only generate the clipplane emulation KIL if a clipplane is used.
The KIL is quite expensive because it forces drivers to disable early Z
discard. It is cheaper to generate and switch between two shaders.
2009-09-08 13:03:03 +02:00
Henri Verbeet 6794a57073 wined3d: Return ~0U for wined3d_log2i(0). 2009-08-10 13:53:05 +02:00
Stefan Dösinger c6d3e75482 wined3d: Not all cards support float16 filtering. 2009-08-06 17:26:31 +02:00
Henri Verbeet da1e5573da wined3d: Rename WineD3DContext to struct wined3d_context. 2009-08-03 15:01:48 +02:00
Henri Verbeet 43e6686a78 wined3d: Rename _WineD3D_GL_Info to struct wined3d_gl_info. 2009-07-17 11:22:07 +02:00
Henri Verbeet 69b7612265 wined3d: Get rid of struct glDescriptor.
In general it might not be a bad idea to group GL specific data into a
separate struct, but IWineD3DSurfaceImpl is currently the only thing that
bothers. It doesn't get it quite right either, since e.g. the PBO isn't in
glDescriptor either.
2009-07-10 12:13:24 +02:00
Henri Verbeet 2ac34bf231 wined3d: Add some missing float suffixes.
The compiler should be smart enough to fix most of these, but it looks sloppy.
2009-07-07 11:50:05 +02:00
Henri Verbeet 670d9ad90b wined3d: Check if formats support blending when attached to an FBO.
Remove the post-pixelshader blending flag if the format doesn't. Note that the
patch doesn't enforce this restriction yet, it only adjusts the reported
format capabilities.
2009-07-02 12:00:38 +02:00
Henri Verbeet 6feb7c62ca wined3d: Make sure the rtInternal format is supported. 2009-07-02 12:00:31 +02:00
Henri Verbeet 6df3f23bca wined3d: Add some missing GL locking to init_format_fbo_compat_info(). 2009-06-29 12:30:18 +02:00
Henri Verbeet 7363b6e2e3 wined3d: Document GL context dependencies. 2009-06-26 12:05:07 +02:00
Stefan Dösinger 85af0b2943 wined3d: Don't emulate clipplanes with ffp vp and fix a wrong if condition.
b2f09fd204 accidentally got the
device->vs_clipping check wrong. The FFP replacement should emulate
clipping if GL can't do this natively with vertex shaders, not the
other way. Also don't emulate clipping if we're using fixed function
vertex processing because (a) clipping is always supported by GL in
this case, and (b), fragment.texcoord[7] is undefined. (Or in the
worst case set to something bad by the app).
2009-06-23 15:53:00 +02:00
Henri Verbeet e5e4d1e9a7 wined3d: Add an rtInternal fallback for WINED3DFMT_R16G16_UNORM. 2009-06-22 12:59:21 +02:00
Henri Verbeet 550a3bbf96 wined3d: Reuse the FBO for check_fbo_compat(). 2009-06-18 15:17:27 +02:00
Henri Verbeet 7599520321 wined3d: Avoid checking depth/stencil and compressed formats in init_format_fbo_compat_info().
Checking these is somewhat pointless since they should never be
color-renderable according to the FBO spec. This patch also happens to avoid
dereferencing a NULL pointer inside fglrx.
2009-06-12 17:33:15 +02:00
Henri Verbeet 1ad485ff83 wined3d: Improve some TRACEs in init_format_fbo_compat_info(). 2009-06-11 11:53:54 +02:00
Henri Verbeet 61fd875bb4 wined3d: Store compression information about compressed formats. 2009-06-10 11:51:04 +02:00
Frank Richter 6136884120 d3d9: Fix bitmask for A2R10G10B10 format. 2009-06-08 16:22:18 +02:00
Henri Verbeet 13aea3a131 wined3d: Use GL_DEPTH32F_STENCIL8 for WINED3DFMT_D24FS8. 2009-06-08 12:44:17 +02:00
Henri Verbeet 4bc2180821 wined3d: Use GL_DEPTH_COMPONENT32F for WINED3DFMT_D32F_LOCKABLE. 2009-06-08 12:44:13 +02:00
Henri Verbeet f8c4832276 wined3d: Use GL_DEPTH24_STENCIL8_EXT for depth stencil formats. 2009-06-05 15:19:56 +02:00
Henri Verbeet fb7531599f wined3d: Only use stretch_rect_fbo() on surfaces that are FBO attachable. 2009-06-05 15:19:35 +02:00
Henri Verbeet 786408fb95 wined3d: Check FBO compatibility on all formats with a GL format.
Instead of just the ones that have a fallback specified.
2009-06-05 14:43:25 +02:00
Henri Verbeet b93c3b3253 wined3d: Set texture filtering to NEAREST in check_fbo_compat(). 2009-06-05 14:43:25 +02:00
Henri Verbeet 0571ebcee3 wined3d: Add extension detection to the GL format template table. 2009-06-05 14:43:25 +02:00
Henri Verbeet cae6a32b08 wined3d: Check the result from wine_rb_get() before using it in WINE_RB_ENTRY_VALUE. 2009-06-05 14:43:25 +02:00
Henri Verbeet 0a059aafbe wined3d: Check FBO compatibility after the fixups are applied. 2009-06-04 12:18:47 +02:00
Henri Verbeet faaea93573 wined3d: Remove WINED3DFMT_R16G16B16A16_SNORM from the GL formats template.
This entry obviously can't work correctly.
2009-06-04 12:18:42 +02:00
Henri Verbeet 0cf49767ad wined3d: Remove entries without an internal format from the GL formats template. 2009-06-04 12:18:33 +02:00
Henri Verbeet ad6279de9f wined3d: Replace the wined3d hash table with the generic red-black tree. 2009-06-03 11:40:14 +02:00
Henri Verbeet 6a9212a1b2 wined3d: Fix debug_d3dusagequery() to handle combinations of flags. 2009-05-25 11:23:53 +02:00
Henri Verbeet 7c2e91c592 wined3d: Fix debug_d3dusage() to handle combinations of flags. 2009-05-25 11:23:47 +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
Stefan Dösinger d2e12a19ca wined3d: Make use of GL_ARB_half_float_vertex.
This extension is a subset of GL_NV_half_float that defines support
for the stream format(same constant), but doesn't define texture
formats or immediate mode entrypoints.
2009-05-05 14:13:02 +02:00
Stefan Dösinger bc07ad0579 d3d8, d3d9: Don't rely on the wined3d buffer type. 2009-04-08 11:35:29 +02:00
Stefan Dösinger 3e099d0147 wined3d: Advertise post pixelshader blending for a few more formats.
Windows advertises it on all these formats(Nvidia Geforce 7400), and
Trackmania Nations needs it on D3DFMT_Q8W8V8U8 to accept ps_3_0 support.
2009-03-30 14:22:06 +02:00
Henri Verbeet 4434d00f84 wined3d: Unify vertex and texture formats.
Some fields should be redundant now, eg. gl_vtx_type and glType. I'll leave
that for a different patch to fix though.
2009-03-27 15:51:25 +01:00
Henri Verbeet 5390628e6f wined3d: Make sure the format actually exists in init_format_texture_info(). 2009-03-27 15:51:24 +01:00
Henri Verbeet 837f163662 wined3d: Create a separate function for setting a format's GL texture info. 2009-03-27 15:50:24 +01:00
Henri Verbeet b8f25ef6f2 wined3d: Create a separate function for setting format fixups. 2009-03-27 15:50:16 +01:00
Henri Verbeet 7874a6b74b wined3d: Create a separate function for checking a format's FBO compatibility. 2009-03-27 15:50:08 +01:00
Henri Verbeet 1407bd6b1a wined3d: Create a separate function for setting basic format info. 2009-03-27 11:23:41 +01:00
Henri Verbeet dd1f0d9c48 wined3d: Pass format_desc to getColorBits() and getDepthStencilBits(). 2009-03-24 12:57:38 +01:00
Henri Verbeet a56a143461 wined3d: Set the byte count for WINED3DFMT_UNKNOWN to 0.
As far as I can tell nothing depends on this being 1, and there's some code
that checks for WINED3DFMT_UNKNOWN and uses 0 for the byte count in that case.
2009-03-24 12:57:12 +01:00
Henri Verbeet a56e3a102b wined3d: Only return a pointer to struct GlPixelFormatDesc from getFormatDescEntry(). 2009-03-13 11:29:10 +01:00
Henri Verbeet 53bf5c2658 wined3d: Add fields from StaticPixelFormatDesc to struct GlPixelFormatDesc.
The idea here is that we should lookup format information in struct
GlPixelFormatDesc, while StaticPixelFormatDesc and GlPixelFormatDescTemplate
will only be used to build the table.
2009-03-13 11:29:01 +01:00
Henri Verbeet e3bcc7544c wined3d: Remove the shader_color_fixup field from IWineD3DBaseTextureClass.
This is redundant now.
2009-03-12 13:09:55 +01:00
Henri Verbeet 4ff5736edf wined3d: Don't compare texUnitMap entries to -1. 2009-03-09 14:39:34 +01:00
Henri Verbeet 3b07e7059e wined3d: Add d3d10 primitive types. 2009-03-05 16:16:24 +01:00
Henri Verbeet b4830feb34 wined3d: Accept WINED3DFMT_R8G8B8A8_UNORM in getColorBits(). 2009-02-25 12:37:06 +01:00
Henri Verbeet 399d992a07 wined3d: Add IWineD3DBuffer, use it in d3d10core. 2009-02-23 12:20:45 +01:00
Henri Verbeet 8cefc47d81 wined3d: Add DXGI formats to WINED3DFORMAT. 2009-02-20 11:10:37 +01:00
Francois Gouget 5b60258f0d wined3d: Make debug{fixup_channel_source,yuv_fixup}() static. 2009-02-18 12:17:38 +01:00
Stefan Dösinger 68c251f327 wined3d: Add a debug function for surface locations. 2009-02-17 12:51:17 +01:00
Michael Stefaniuc 118c75a8c7 wined3d: Remove superfluous pointer casts. 2009-02-03 12:40:14 +01:00
Michael Stefaniuc cc6b283d3a wined3d: Remove some unused defines. 2009-02-03 12:40:12 +01:00
Stefan Dösinger 50109aa969 wined3d: Get rid of last_was_foggy_shader & friends.
The fog settings do not depend on wether the shader writes to oFog or not,
instead they depend on the FOGVERTEXMODE and FOGTABLEMODE settings, and if a
vertex shader is bound at all.

It works the same way as with the fixed function, and having a vertex shader
is the same as using pretransformed vertices, just that the fog coord comes
from the shader instead of the specular color:

FOGTABLEMODE != NONE: The Z coord is used, oFog is ignored
FOGTABLEMODE == NONE, with VS: oFog is used
FOGTABLEMODE == NONE, no VS, XYZ: Z is used
FOGTABLEMODE == NONE, no VS, XYZRHW: diffuse color is used
2009-01-20 12:45:40 +01:00
Henri Verbeet 5d875906c1 wined3d: Remove some superfluous pointer casts. 2009-01-20 12:34:05 +01:00
Henri Verbeet 45a61d1ac4 wined3d: Enable GL_HALF_FLOAT_NV when NV_HALF_FLOAT is supported.
This makes more sense than the other way around.
2009-01-08 13:21:56 +01:00
Henri Verbeet b1812c690c wined3d: Add support for EXT_vertex_array_bgra.
This allows us to skip BGRA->RGBA color conversion for vertex attributes if
this extension is present.
2009-01-08 13:21:51 +01:00
Henri Verbeet a8697d90e4 wined3d: Renumber WINED3DTEXTURESTAGESTATETYPE enum elements.
Saves some space by not having unused entries is the arrays tracking these
states.
2009-01-06 12:45:43 +01:00
Henri Verbeet e8ba733706 wined3d: Remove unused enum elements from WINED3DTEXTURESTAGESTATETYPE. 2009-01-05 12:41:31 +01:00
Henri Verbeet 39909f2a06 wined3d: Handle WINED3DFVF_XYZW in get_flexible_vertex_size().
Spotted by Chris Robinson.
2009-01-03 14:55:31 +01:00
Andrew Talbot f9762d6082 wined3d: Remove superfluous semicolons. 2008-12-24 19:59:14 +01:00
Henri Verbeet 4a19d893e5 wined3d: Only apply shader constants that changed.
This improves performance a bit for applications that use a lot of
shaders with a lot of constants.
2008-12-20 11:11:45 +01:00
Roderick Colenbrander 086d949877 wined3d: Add GL_RG16F / GL_RG32F support using ARB_texture_rg. 2008-12-19 17:49:20 +01:00
Roderick Colenbrander 331fe08b54 wined3d: Add R32F using ARB_texture_rg. 2008-12-19 17:49:08 +01:00
Roderick Colenbrander 8cb84458d3 wined3d: Add R16F using ARB_texture_rg. 2008-12-19 17:49:02 +01:00
Henri Verbeet 7d29aecd6f wined3d: Use a simpler way to calculate the number of texture levels.
It's probably slightly faster too.
2008-12-12 11:40:39 +01:00
Henri Verbeet 70ed814b95 wined3d: Get rid of the textureDimensions field in the state block. 2008-12-12 11:40:32 +01:00
Stefan Dösinger f2f90b6965 wined3d: Fix ARG_UNUSED and use it properly.
That bug was uncovered by Henri's change of the bitfield sizes.
2008-12-11 14:07:31 +01:00
Henri Verbeet 4aa00e8a21 wined3d: Rename texture_stage_op.color_correction to texture_stage_op.color_fixup.
This is consistent with other uses of struct color_fixup_desc.
2008-12-10 10:50:24 +01:00
Stefan Dösinger e04556bb16 wined3d: Fix D3DFMT_R32F, R16F, G16R16F, ... in the pixel shader.
This allows us to drop the load time conversion and the clear
readback hack and replaces it with a color fixup in the fixed
function pipeline replacement.
2008-12-04 12:00:15 +01:00
Henri Verbeet 89139b7589 wined3d: Make shader texture format fixups more generic.
Based on a patch by Stefan Dösinger. This is more flexible, and allows
the shader backend implementation to be simpler, since it doesn't have
to know about specific formats. The next patch makes use of this.
2008-12-04 11:59:58 +01:00
Henri Verbeet b451048eb7 wined3d: Move GlPixelFormatDesc to wined3d_private.h where it belongs.
Also remove the silly typedef.
2008-12-04 11:59:06 +01:00
Henri Verbeet 5532c990b6 wined3d: Const correctness fixes. 2008-12-02 14:04:15 +01:00
Henri Verbeet eb78c2a082 wined3d: Const correctness fixes for utils.c. 2008-11-26 12:04:56 +01:00
Stefan Dösinger 33482a732e wined3d: Enable blue = 1.0 fixup for D3DFMT_V8U8.
The dx7 sdk demos need this.
2008-11-25 13:07:14 +01:00
Stefan Dösinger 5c79a9f437 wined3d: Rename the fragment ffp desc structures.
This reflects the fact that they describe the fragment pipeline.
The vertex pipeline will use its own structures.
2008-11-20 12:17:45 +01:00
Stefan Dösinger 620a423b22 wined3d: Kill the GL_ATI_envmap_bumpmap code.
GL_ATI_envmap_bumpmap provides two things: Signed V8U8 pixel formats,
and bump mapping. The extension is only supported on fglrx, and this
driver also supports GL_ARB_fragment_program.  Thus the bump mapping
code is never used on any driver out there.  Furthermore, if it is
used, it tends to crash the driver

The signed pixel format is used, as it can be used by pixel shaders or
the ARBfp replacement. However, the format is broken in fglrx, and
negative values are clamped to 0.0. This results in test
failures. WineD3D has an alternative codepath using scale+bias to
enable V8U8 using a standard signed RGB which works correctly on
fglrx.
2008-11-04 11:41:14 +01:00
Vitaliy Margolen a2b2a4cf79 wined3d: Add one more FBO error status code. 2008-10-18 19:35:20 +02:00