Commit Graph

3781 Commits

Author SHA1 Message Date
Henri Verbeet 4ec2b09d8f wined3d: Don't check for a "representative" in the MarkStateDirty() functions.
States without representative should never be called. Arguably they shouldn't
exist in the first place, but allowing them simplifies the state table.
2009-08-21 11:10:21 +02:00
Henri Verbeet b2e543b22f wined3d: Add a state handler for WINED3DRS_DEBUGMONITORTOKEN. 2009-08-21 11:10:15 +02:00
Henri Verbeet a36e30b541 wined3d: Mark the correct state dirty. 2009-08-21 11:10:07 +02:00
Stefan Dösinger 3cd91a451d wined3d: Use 50 chars for register names in texm3x3* functions. 2009-08-19 17:28:08 +02:00
Henri Verbeet c70f3816ab wined3d: Hide WINED3DFMT_R16G16B16A16_UNORM again.
This format is broken on some cards. Hide it until we figure out a reliable
way to deal with it.
2009-08-19 14:45:39 +02:00
Henri Verbeet 5a24a02ad5 wined3d: Pass the context's gl_info to state handlers. 2009-08-19 14:45:34 +02:00
Henri Verbeet dc8b1bdc0f wined3d: Rename some GLSL instruction handlers.
The pshader_glsl_* names are a leftover from when we had separate code for
vertex and fragment shaders.
2009-08-19 14:45:23 +02:00
Henri Verbeet ffb38da024 wined3d: Try to force a top-left filling convention. 2009-08-19 14:45:09 +02:00
Henri Verbeet 92b66ac82c wined3d: Make use_vs() safe to call from IWineD3DDeviceImpl_FindTexUnitMap(). 2009-08-19 14:45:02 +02:00
Rico Schüller d9784c1a2f wined3d: Fix some checkGLcalls. 2009-08-19 14:41:49 +02:00
Jörg Höhle 7763da811b wined3d: Check GL_SUPPORT prior to an ARB occlusion call. 2009-08-17 19:36:41 +02:00
Henri Verbeet d900491310 wined3d: Replace find_clip_texcoord() with a generic function for finding a free input register. 2009-08-17 13:57:50 +02:00
Henri Verbeet 8d0ad2cf36 wined3d: Remove a redundant IWineD3DDeviceImpl_MarkStateDirty() call.
We should now correctly track the relevant state per-context. The
IWineD3DDeviceImpl_SetViewport() call isn't quite correct for d3d8 and d3d9,
Stefan still has a patch for that.
2009-08-17 13:57:50 +02:00
Henri Verbeet b8078fc747 wined3d: Use WINED3D_UNMAPPED_STAGE in some more places. 2009-08-17 13:57:50 +02:00
Henri Verbeet 7a0670392c wined3d: Check the correct vertex sampler in device_unit_free_for_vs(). 2009-08-17 13:57:50 +02:00
Henri Verbeet 8cf7aa2bdd wined3d: Don't use a start index higher than MAX_COMBINED_SAMPLERS - 1 in device_map_vsamplers(). 2009-08-17 13:57:50 +02:00
Henri Verbeet ecd2dc7603 wined3d: Make RTL_READTEX the default rendertarget locking method.
For most cards this should make more sense than RTL_READDRAW, even if e.g.
surface_upload_data() has some room for improvement.
2009-08-14 13:59:09 +02:00
Henri Verbeet 779ad6b9f1 wined3d: Add a separate function for guessing the card. 2009-08-14 13:59:08 +02:00
Henri Verbeet 93218c6602 wined3d: Add a separate function for guessing the driver version.
Note that I don't necessarily think the ATI path for example will work
correctly. This patch is just for moving it out of IWineD3DImpl_FillGLCaps().
2009-08-14 13:59:08 +02:00
Henri Verbeet b94e89dae9 wined3d: Add a separate function for parsing the GL version. 2009-08-14 13:59:08 +02:00
Henri Verbeet a1402e0677 wined3d: Add a separate function for guessing the vendor. 2009-08-14 13:59:08 +02:00
Henri Verbeet c573d0a4c9 wined3d: Escape GL strings with debugstr_a() in IWineD3DImpl_FillGLCaps(). 2009-08-14 13:59:08 +02:00
Henri Verbeet 914a21740c wined3d: Recognize GL_VENDOR "Tungsten Graphics, Inc." as VENDOR_MESA. 2009-08-13 11:45:42 +02:00
Henri Verbeet e205973915 wined3d: Remove the redundant vs_nv_version and ps_nv_version fields from struct wined3d_gl_info. 2009-08-13 11:45:36 +02:00
Henri Verbeet fbc3cf89e2 wined3d: Remove some unused fields from struct wined3d_gl_info. 2009-08-13 11:45:24 +02:00
Henri Verbeet 42c2d06bc0 wined3d: Don't make wgl calls from under the GL lock. 2009-08-13 11:45:17 +02:00
Henri Verbeet f7918b978f wined3d: Make the "luminanceparams" shader_reg_maps member a bitmap. 2009-08-12 13:22:50 +02:00
Henri Verbeet 95bb4c0486 wined3d: Make the "bumpmat" shader_reg_maps member a bitmap. 2009-08-12 13:22:44 +02:00
Henri Verbeet 3d718d6414 wined3d: Make the "labels" shader_reg_maps member a bitmap. 2009-08-12 13:22:37 +02:00
Henri Verbeet 270f57e755 wined3d: Make the "address" shader_reg_maps member a bitmap. 2009-08-12 13:22:30 +02:00
Henri Verbeet 3ec639e38c wined3d: Fix swapchain draw buffer cleanup.
Destroying the first back buffer before the other ones might cause an already
freed surface to be used as target in FindContext().
2009-08-12 13:22:25 +02:00
Henri Verbeet 6fa9fa15da wined3d: Make the "temporary" shader_reg_maps member a bitmap. 2009-08-11 12:36:20 +02:00
Henri Verbeet 50853e295b wined3d: Make the "texcoord" shader_reg_maps member a bitmap. 2009-08-11 12:36:16 +02:00
Henri Verbeet a282380f08 wined3d: Fix the type of the shader_reg_maps bitfields. 2009-08-11 12:36:12 +02:00
Henri Verbeet b2ace3b1ab wined3d: Correctly check for luminance bumpmap parameters in shader_generate_glsl_declarations(). 2009-08-11 12:35:49 +02:00
Henri Verbeet 76fdf2c1a5 wined3d: Handle GetData() on event queries that aren't started yet.
This fixes a regression introduced by fb77678e9f.
2009-08-11 12:35:43 +02:00
Francois Gouget e74efb5487 Assorted spelling fixes. 2009-08-11 12:35:38 +02:00
Henri Verbeet cbd555bbc9 wined3d: Get rid of the unused vbo_mode setting. 2009-08-10 13:53:11 +02:00
Henri Verbeet 6794a57073 wined3d: Return ~0U for wined3d_log2i(0). 2009-08-10 13:53:05 +02:00
Henri Verbeet 3b06fc92f4 wined3d: Use EXT_provoking_vertex to match Direct3D's provoking vertex convention. 2009-08-10 13:52:50 +02:00
Henri Verbeet ac64bf6406 wined3d: Detect EXT_provoking_vertex. 2009-08-10 13:52:43 +02:00
Henri Verbeet 8d746c31ba wined3d: Properly handle negative loop step in shader_glsl_loop(). 2009-08-10 13:52:37 +02:00
Roderick Colenbrander 5a00c8053e wined3d: Get rid of two dead render target lock mode options. 2009-08-10 13:10:49 +02:00
Stefan Dösinger 4f9f8fef0b wined3d: Dirtify the correct state. 2009-08-07 14:57:09 +02:00
Stefan Dösinger 6f5a1d9a15 wined3d: Filter WINED3DSTENCILCAPS_TWOSIDED in d3d8. 2009-08-07 14:56:48 +02:00
Stefan Dösinger 296573caae d3d: Filter R8G8B8 in d3d8 and d3d9. 2009-08-07 14:56:40 +02:00
Stefan Dösinger 14eedc5be7 wined3d: Watch out about higher constants when clamping ps 1.x consts.
ps 1.x supports only 8 constants, so the shader load code dirtifies the
first 8 on a shader switch. However, the constant load code reloaded all dirty
consts with clamping. That potentially left constants > 8 clamped.
2009-08-07 14:56:33 +02:00
Henri Verbeet 35826e9761 wined3d: Fix a condition in record_lights(). 2009-08-07 12:11:35 +02:00
Henri Verbeet 41729ca919 wined3d: Check the return value of wglDeleteContext() in context_destroy_gl_resources(). 2009-08-07 12:11:27 +02:00
Henri Verbeet 7ed116da2e wined3d: Merge the context->current_rt check for rendertarget readback with the code above.
Also update the comments.
2009-08-07 12:11:17 +02:00
Henri Verbeet 0479fb13b5 wined3d: Explicitly pass the context to drawStridedSlow(). 2009-08-07 12:11:10 +02:00
Henri Verbeet 3bf0ad4528 wined3d: Explicitly pass the context to the shader_select() handler. 2009-08-07 12:11:06 +02:00
Stefan Dösinger c6d3e75482 wined3d: Not all cards support float16 filtering. 2009-08-06 17:26:31 +02:00
Henri Verbeet 4c1b3de936 wined3d: Call the shader_load_np2fixup_constants() handler directly from inside the shader backend. 2009-08-06 17:26:30 +02:00
Henri Verbeet 03686cb6bd wined3d: Explicitly pass the context to the shader_load_constants() handlers. 2009-08-06 17:26:30 +02:00
Henri Verbeet a7251f0f4e wined3d: Track render_offscreen in the context.
This makes sure the relevant states in FindContext() are actually marked dirty
when needed.
2009-08-06 17:26:30 +02:00
Henri Verbeet b04e992a65 wined3d: Set the WINED3DTEXF_NONE entry in the minification lookup table to GL_NEAREST.
Although WINED3DTEXF_NONE is not a valid minification filter, having it in the
tables simplifies the lookup. GL_NEAREST is more appropriate than GL_LINEAR
though.
2009-08-06 17:26:29 +02:00
Henri Verbeet 7165bd19c1 wined3d: WINED3DTEXF_NONE only makes sense as a mip filter. 2009-08-05 11:20:43 +02:00
Henri Verbeet 9e8f7898c9 wined3d: Get rid of the ANISOTROPIC entry from the filter lookup tables.
Anisotropy and texture filters are orthogonal in GL. In D3D
D3DTEXF_ANISOTROPIC just selects the best (linear) filter type and enables
anisotropy.
2009-08-05 11:20:36 +02:00
Henri Verbeet 62ac872b36 wined3d: Remove a redundant check from basetexture_get_autogen_filter_type().
This is already initialized to an appropriate value in basetexture_init().
Also fix the indentation while we're at it.
2009-08-05 11:20:24 +02:00
Henri Verbeet a86f31658b wined3d: Move texture filter lookup table initialization to basetexture_init(). 2009-08-05 11:20:19 +02:00
Henri Verbeet 351d6de818 wined3d: Add functions to lookup texture filters. 2009-08-05 11:20:09 +02:00
Henri Verbeet 0f161dc10f wined3d: Remove some unused code. 2009-08-05 11:19:59 +02:00
Stefan Dösinger 2858f67a2a wined3d: Enable WINED3DFMT_R16G16B16A16_UNORM. 2009-08-05 11:19:46 +02:00
Stefan Dösinger f3b39d9085 wined3d: Preload the correct texture location. 2009-08-05 11:19:35 +02:00
Stefan Dösinger f53451ddac wined3d: Only use WINE_normalized_texrect if ARB_texture_np2 is supported. 2009-08-05 11:19:26 +02:00
Stefan Dösinger 2e9362d0fb wined3d: ARB clipplane init needs the helper constant. 2009-08-05 11:19:14 +02:00
Henri Verbeet d4159adbc8 wined3d: Statically initialize the filter lookup tables.
Also add some comments.
2009-08-04 13:04:23 +02:00
Henri Verbeet b30a31e09a wined3d: Set a more appropriate value for the ANISOTROPIC/NONE min/mip filter. 2009-08-04 13:04:11 +02:00
Henri Verbeet 25fe98e02b wined3d: Don't disable mipmapping if we lack EXT_texture_filter_anisotropic.
These don't have a whole lot to do with each other.
2009-08-04 13:04:05 +02:00
Henri Verbeet efb78aca64 wined3d: Update the WINED3DSAMP_MAGFILTER state even if we didn't recognize the value.
It's a bit pointless to keep printing FIXMEs after the first time.
2009-08-04 13:03:44 +02:00
Henri Verbeet 10906e6b8e wined3d: Set the initial value of WINED3DTEXSTA_MAXANISOTROPY to 1. 2009-08-04 13:03:40 +02:00
Henri Verbeet 2f3e993e7e wined3d: Properly calculate GL_TEXTURE_MAX_ANISOTROPY_EXT. 2009-08-04 13:03:34 +02:00
Henri Verbeet b7812932bc wined3d: Don't respecify compressed textures in surface_upload_data().
Passing NULL to glCompressedTexImage2DARB() doesn't work particularly well
when both client storage and PBOs are enabled. Also, two years is long enough
to give driver developers a chance to fix the bug this was supposed to work
around.
2009-08-03 15:01:55 +02:00
Henri Verbeet da1e5573da wined3d: Rename WineD3DContext to struct wined3d_context. 2009-08-03 15:01:48 +02:00
Henri Verbeet 1d647283d5 wined3d: Don't use the GL texture flags to determine if a format is a depth stencil in CheckDepthStencilCapability().
The OpenGL implementation might not support ARB_depth_texture, but that
doesn't mean we can't use the format for the depth buffer.
2009-08-03 15:01:34 +02:00
Henri Verbeet 43bfb240ad wined3d: Use the context's current render target the get the swapchain drawable size.
"surface" might point to the frontbuffer while we're rendering to the
backbuffer, etc.
2009-08-03 15:01:25 +02:00
Henri Verbeet 0047c55e86 wined3d: Handle destruction of a context's current render target. 2009-08-03 15:01:18 +02:00
Henri Verbeet 9baf7864c5 wined3d: Return proper NULLs from CreateContext(). 2009-07-24 13:11:01 +02:00
Henri Verbeet be536ebe2f wined3d: Get rid of activeContext. 2009-07-24 13:10:57 +02:00
Henri Verbeet c8fe24d29e wined3d: Explicitly pass the context to surface_load_ds_location(). 2009-07-24 13:10:47 +02:00
Henri Verbeet 2c71b85334 wined3d: Explicitly pass the context to get_drawable_size(). 2009-07-24 13:10:37 +02:00
Henri Verbeet fb77678e9f wined3d: Manage event queries in the context. 2009-07-24 13:10:28 +02:00
Henri Verbeet 4ab7af6575 wined3d: Manage occlusion queries in the context. 2009-07-24 13:10:19 +02:00
Leonid Lobachev f6cc091d75 wined3d: Add missing calling convention specifiers. 2009-07-23 13:20:29 +02:00
Henri Verbeet 357ea123d9 wined3d: get_drawable_size() needs a context. 2009-07-23 11:22:25 +02:00
Henri Verbeet ea2caa9ba1 wined3d: Return the activated context from ActivateContext(). 2009-07-23 11:22:22 +02:00
Henri Verbeet 85e2c05e4f wined3d: Explicitly pass the wined3d context to context_apply_draw_buffer(). 2009-07-23 11:22:18 +02:00
Henri Verbeet 9253bbcb05 wined3d: Get rid of last_device. 2009-07-23 11:22:13 +02:00
Henri Verbeet 401e99b0c0 wined3d: Remove some unnecessary code.
Now that we don't depend on activeContext and lastActiveRenderTarget to be
non-NULL this code can go.
2009-07-23 11:22:08 +02:00
Henri Verbeet 57ccdb7e36 wined3d: Don't reuse contexts marked for destruction. 2009-07-23 11:22:03 +02:00
Henri Verbeet e5d621c081 wined3d: Try to reuse the thread's current context in FindContext(). 2009-07-22 14:42:51 +02:00
Henri Verbeet 9ceda3a6fd wined3d: Move some context selection code from ActivateContext() to FindContext(). 2009-07-22 14:42:51 +02:00
Henri Verbeet 219d3abdd1 wined3d: Simplify FindContext() a bit. 2009-07-22 14:42:51 +02:00
Henri Verbeet ce436a76e2 wined3d: Get rid of getActiveContext(). 2009-07-22 14:42:50 +02:00
Henri Verbeet 377cda97e7 wined3d: Avoid destroying contexts that are current in another thread. 2009-07-22 14:42:50 +02:00
Henri Verbeet 1a43030664 wined3d: Keep track of a thread's wined3d context. 2009-07-22 14:42:50 +02:00
Henri Verbeet c114b04016 wined3d: Remove the useless lastThread field from IWineD3DDeviceImpl. 2009-07-21 14:23:06 +02:00
Henri Verbeet 2d7500600b wined3d: Get rid of lastActiveRenderTarget. 2009-07-21 14:23:02 +02:00
Henri Verbeet 223b9d5c01 wined3d: Get rid of lastActiveRenderTarget in FindContext(). 2009-07-21 14:22:58 +02:00
Henri Verbeet 8402519c7a wined3d: Call ModifyLocation on "target" in IWineD3DDeviceImpl_ClearSurface().
This is the same pointer, but lastActiveRenderTarget will go away.
2009-07-21 14:22:53 +02:00
Henri Verbeet 6c0c1671b2 wined3d: Keep track of a context's current render target. 2009-07-21 14:22:49 +02:00
Henri Verbeet ee4d18cc83 wined3d: Pass NULL to ActivateContext() when we don't need a specific target.
Once we keep track of the wined3d context for each thread,
lastActiveRenderTarget won't do what we want here.
2009-07-21 14:22:44 +02:00
Henri Verbeet e6f55c2650 wined3d: Remove an unused struct member. 2009-07-20 13:35:15 +02:00
Henri Verbeet 3a63552fd1 wined3d: Skip some unnecessary FBO binds. 2009-07-20 13:35:11 +02:00
Henri Verbeet dedd62c0e2 wined3d: Recognize the SM4 log opcode. 2009-07-20 13:35:07 +02:00
Stefan Dösinger e06997359f wined3d: Set the highest dirty marker after marking shader constants dirty. 2009-07-20 12:23:14 +02:00
Stefan Dösinger cd7f43b00d wined3d: Don't activate a context unless we need one. 2009-07-20 12:23:07 +02:00
Henri Verbeet a80247f58b wined3d: Avoid redundant FBO binds.
Apparently this is an expensive operation for certain drivers, even if the
binding doesn't actually change.
2009-07-17 11:22:07 +02:00
Henri Verbeet 710f6f8456 wined3d: Always use context_bind_fbo() to change the framebuffer binding. 2009-07-17 11:22:07 +02:00
Henri Verbeet 7485173849 wined3d: Pass the context instead of the device to the various context functions. 2009-07-17 11:22:07 +02:00
Henri Verbeet a01616a6c3 wined3d: Store a pointer to wined3d_gl_info in struct WineD3DContext. 2009-07-17 11:22:07 +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 50f5abcad9 wined3d: Recognize the SM4 dp4 opcode. 2009-07-16 16:03:40 +02:00
Henri Verbeet 03acf9d207 wined3d: Recognize the SM4 dp3 opcode. 2009-07-16 16:03:36 +02:00
Henri Verbeet 7539cd5c85 wined3d: Recognize the SM4 rsq opcode. 2009-07-16 16:03:32 +02:00
Henri Verbeet d6ffe00cd2 wined3d: Recognize the SM4 constant buffer register type. 2009-07-16 16:03:28 +02:00
Henri Verbeet c4f8845bc9 wined3d: Recognize SM4 arrays.
This is for SM4 constant buffers, which look like cb<x>[<y>]. At some later
point we should probably translate pre-SM4 constants to constant buffers.
2009-07-16 16:03:23 +02:00
Stefan Dösinger 9d14dcab68 wined3d: Use the unmodified source in MOVA.
The code removed by this patch was a leftover from the time when we tried to
emulate MOVA with a plain ARL, which only supports one source in plain ARB.
This breaks the more sophisticated MOVA and 4 component ADDR register we have
now however.
2009-07-16 11:15:45 +02:00
Stefan Dösinger 6a04c2d5cc wined3d: Don't call glGetError if nobody is listening. 2009-07-16 11:15:40 +02:00
Henri Verbeet ae8e8ac73f wined3d: Check the return values for some wgl calls. 2009-07-15 13:24:24 +02:00
Henri Verbeet 476c83522b wined3d: Remove the remains of an ATI_fragment_shader hack.
This was originally added as a workaround for a Mesa bug by commit
ddf52dda15. The other half of the hack has since
been removed. This code causes problems when wglDeleteContext() from a
different thread causes our current context to be destroyed, since
wglGetCurrentContext() will return a destroyed context in that case. That is a
flaw in our wgl implementation, since wglDeleteContext() shouldn't allow a
context that's current in a different thread to be destroyed, but this hack is
a bad idea regardless.
2009-07-15 13:24:19 +02:00
Stefan Dösinger 3c2fa6aea4 wined3d: Set the depth blit helper texture address mode to clamp.
On ATI cards we use the driver's GL_ARB_texture_non_power_of_two emulation to
support conditional NP2 textures without having to deal with the denormalized
coordinates. The default GL_TEXTURE_2D address mode is incompatible with
GL_ARB_texture_rectangle however.
2009-07-15 13:17:12 +02:00
Stefan Dösinger 387d337a70 wined3d: EXP and EXPP are scalar operations. 2009-07-15 13:17:02 +02:00
Stefan Dösinger 2bfdff198c wined3d: Check the correct constant limit. 2009-07-10 13:07:33 +02:00
Stefan Dösinger 17769497eb wined3d: Drop the color0 mov optimization if the src is overwritten. 2009-07-10 13:07:33 +02:00
Stefan Dösinger 8a6553da14 wined3d: Only use 4 component specular colors if GL allows it. 2009-07-10 13:07:33 +02:00
Henri Verbeet 38cb9d02b1 wined3d: Take geometry shaders into account in shader_glsl_load_constantsB(). 2009-07-10 12:13:29 +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 038d939941 wined3d: Remove GetGlDesc() from the public IWineD3DSurface interface. 2009-07-10 12:13:09 +02:00
Henri Verbeet 60e0997c79 wined3d: Simplify the GLSL sRGB write code. 2009-07-10 12:13:03 +02:00
Stefan Dösinger c0e5c8f481 wined3d: Update Nvidia driver versions. 2009-07-09 12:47:39 +02:00
Stefan Dösinger cfd0652980 wined3d: Add Intel GMA X3100 to our card DB. 2009-07-09 12:47:33 +02:00
Stefan Dösinger 37b73478f1 wined3d: An indirect address op can adjust min and max at the same time. 2009-07-09 12:47:24 +02:00
Henri Verbeet 9cf7888002 wined3d: Fix some cast-qual warnings. 2009-07-09 11:38:07 +02:00
Henri Verbeet 95d9b1271f wined3d: Get rid of the useless "fragcolor" variable in shader_glsl_generate_pshader(). 2009-07-09 11:38:05 +02:00
Henri Verbeet 483d552e21 wined3d: Allow shader_buffer_init() to fail. 2009-07-09 11:38:02 +02:00
Henri Verbeet 40b411958b wined3d: Rename "SHADER_BUFFER" to something sane. 2009-07-09 11:37:58 +02:00
Henri Verbeet bddc4d3f0d wined3d: Reuse the shader buffer between shaders. 2009-07-09 11:37:53 +02:00
Henri Verbeet 6211643bf5 wined3d: Fix a sign compare warning in shader_vaddline(). 2009-07-08 20:14:44 +02:00
Henri Verbeet e41831990d wined3d: Fix a sign compare warning in glsl_shader.c. 2009-07-08 20:14:35 +02:00
Henri Verbeet 949cd089d5 wined3d: Trace the D3D shader in find_glsl_vshader() / find_glsl_pshader().
It's quite useful to know to which D3D shader a GLSL shader corresponds.
2009-07-08 20:14:32 +02:00
Henri Verbeet 6d8e1e52c8 wined3d: Avoid destroying the currently active context for non-implicit swapchains. 2009-07-08 20:14:25 +02:00
Henri Verbeet 7089128d2a wined3d: Implement a A8R8G8B8 to X8R8G8B8 surface format converter. 2009-07-08 20:14:21 +02:00
Erik Inge Bolsø 48995f3354 wined3d: Fix Nvidia GTX series misdetection. 2009-07-08 20:13:25 +02:00
Henri Verbeet 3484d46a36 wined3d: Replace some shader_is_pshader_version() calls with plain type checks. 2009-07-07 11:50:35 +02:00
Henri Verbeet 699f68cdee wined3d: Get rid of some pointers in WINED3DADAPTER_IDENTIFIER.
This also avoids some unchecked strcpy() calls.
2009-07-07 11:50:30 +02:00
Henri Verbeet 32fd8f2130 wined3d: checkGLcall() doesn't need a \n. 2009-07-07 11:50:22 +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 7ec911adeb wined3d: Avoid an unnecessary strcpy(). 2009-07-07 11:49:54 +02:00
Henri Verbeet c9257aed85 wined3d: Avoid a forward declaration. 2009-07-06 14:35:27 +02:00
Henri Verbeet 4571455fea wined3d: Remove the gl_renderer field from WineD3D_GL_Info. 2009-07-06 14:35:27 +02:00
Henri Verbeet b2331ec79b wined3d: Get rid of the unused gl_version and glx_version fields. 2009-07-06 14:35:27 +02:00
Henri Verbeet 966f8f452d winedd3d: Get rid of a useless trace.
gl_card isn't initialized yet here, and GL_RENDERER is already printed
earlier.
2009-07-06 14:35:27 +02:00
Henri Verbeet ad0ef46a39 wined3d: Get rid of the redundant "return_value" variable. 2009-07-06 14:35:27 +02:00
Alexandre Julliard 56af92b073 makefiles: Regenerate the source lists using make_makefiles. 2009-07-03 13:26:38 +02:00
Henri Verbeet 17688365ed wined3d: Don't accept NULL as a valid result from glGetString(). 2009-07-03 13:05:52 +02:00
Henri Verbeet 532b99078e wined3d: Don't abuse blending to disable color writes in surface_depth_blt(). 2009-07-03 13:05:52 +02:00
Henri Verbeet 23ce9d72b8 wined3d: Get rid of wined3d_fake_gl_context_cs. 2009-07-03 13:05:52 +02:00
Henri Verbeet 4cacf2e08f wined3d: Use a proper structure for storing initial GL context information. 2009-07-03 13:05:51 +02:00
Henri Verbeet db6ea72201 wined3d: Get rid of the silly refcount for the "fake" GL context. 2009-07-02 12:01:02 +02:00
Henri Verbeet b5da7f49d3 wined3d: Don't reuse random GL contexts during initialization.
Obviously there's no guarantee about the state of such a context. The specific
problem is that it might have GL_UNPACK_CLIENT_STORAGE_APPLE enabled, causing
some glTexImage2D() calls to fail, but it's a bad idea in general.
2009-07-02 12:00:50 +02:00
Henri Verbeet 50e9ad66e2 wined3d: Clear the last device in WineD3D_CreateFakeGLContext(). 2009-07-02 12:00:44 +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
Tobias Jakobi 05c4d0a8b0 wined3d: Fix comments about NP2 fixup. 2009-07-02 11:57:01 +02:00
Tobias Jakobi 0caebe5f51 wined3d: Force NP2 constant reload in shader_arb_select. 2009-07-02 11:56:57 +02:00
Tobias Jakobi ef280280c2 wined3d: Implement shader_arb_load_np2fixup_constants. 2009-07-02 11:56:51 +02:00
Tobias Jakobi e29babbf6d wined3d: Add NP2 fixup code to shader_hw_sample (ARB). 2009-07-02 11:56:45 +02:00
Tobias Jakobi 034fa4268c wined3d: Add NP2 fixup code to shader_arb_generate_pshader. 2009-07-02 11:56:39 +02:00
Tobias Jakobi ec30e9a85e wined3d: Add arb_ps_np2fixup_info structure and improve structure packing for arb_ps_compiled_shader. 2009-07-02 11:56:33 +02:00
Tobias Jakobi 2d532a1597 wined3d: Add ps_arb_max_local_constants. 2009-07-02 11:56:27 +02:00
Stefan Dösinger c82da7d975 wined3d: Don't dirtify too many shader constants.
If we have start = 4, count = 3, the highest dirty constant is the one with index 6. start + count gives 7,
so it already includes the zero-based array correction. Don't add an additional 1.

Additionally to the inefficiency of looking at one extra constant, this causes problems if the driver
rejects loading 257 constants on the initial load. In this case no constant is loaded if
GL_EXT_gpu_program_parameters is used.
2009-07-01 13:14:34 +02:00
Henri Verbeet 40bc47901c wined3d: Use flags for driver quirks. 2009-07-01 11:41:44 +02:00
Henri Verbeet c475789bb6 wined3d: Move the driver_quirk structure to directx.c. 2009-07-01 11:41:38 +02:00
Henri Verbeet 50419daa11 wined3d: Try to activate the original context for queries. 2009-07-01 11:41:33 +02:00
Henri Verbeet ca69ec0e85 wined3d: Recognize geometry shaders in shader_trace_init(). 2009-07-01 11:41:27 +02:00
Henri Verbeet 5df58b7f89 wined3d: Replace "pshader" checks with explicit type checks in shader_get_registers_used(). 2009-07-01 11:41:21 +02:00
Henri Verbeet 1911adcea5 wined3d: Consolidate "color0_mov" handling a bit. 2009-06-30 12:55:45 +02:00
Henri Verbeet 02a0614aa1 wined3d: Use dst_param.reg.idx to index reg_maps->texcoord_mask. 2009-06-30 12:55:40 +02:00
Henri Verbeet 03702e1de3 wined3d: Remove some redundant pshader checks. 2009-06-30 12:55:24 +02:00
Henri Verbeet 592361be38 wined3d: Pass the shader type to shader_record_register_usage(). 2009-06-30 12:55:19 +02:00
Henri Verbeet 5b6877ee62 wined3d: Remove shader_is_version_token(). 2009-06-30 12:55:11 +02:00
Henri Verbeet 4075e45d81 wined3d: Add a WARN to IWineD3DDeviceImpl_SetFrontBackBuffers() about potentially being called without a GL context. 2009-06-29 12:30:37 +02:00
Henri Verbeet f57967c983 wined3d: Always check the result of wglMakeCurrent(). 2009-06-29 12:30:28 +02:00
Henri Verbeet 40565211fb wined3d: Prevent GL calls from DestroyContext() if we failed to make the GL context current.
This can happen if the window is destroyed before the device is released.
2009-06-29 12:30:24 +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
Stefan Dösinger d5e2c14225 wined3d: Add a NOP ret handler to GLSL. 2009-06-29 12:28:49 +02:00
Stefan Dösinger d4312ebb16 wined3d: Add the vertex shader footer in the main function. 2009-06-29 12:28:40 +02:00
Stefan Dösinger 5befed21f6 wined3d: Write the vshader footer in a separate function. 2009-06-29 12:28:31 +02:00
Stefan Dösinger 5859d87754 wined3d: Implement function calls with NV exts. 2009-06-29 12:28:21 +02:00
Stefan Dösinger 031401a070 wined3d: ARB*p is already on after a depth blit. 2009-06-29 12:28:13 +02:00
Stefan Dösinger 9d63585352 wined3d: Don't disable ARBfp if the replacement pipeline is used.
If the replacement pipeline is used, ARBfp is always on. Disabling it
can break shaders or the replacement pipeline, because the shader and
ffp code assumes the extension is on.
2009-06-29 12:28:06 +02:00
Stefan Dösinger 1f8761219b wined3d: Only update the screen when the frontbuffer was changed.
There is no need to copy the frontbuffer to the screen when the backbuffer was
modified...
2009-06-29 12:27:55 +02:00
Francois Gouget 5aac7fe783 wined3d: Add a trailing '\n' to a FIXME() trace. 2009-06-26 14:40:21 +02:00
Henri Verbeet 7363b6e2e3 wined3d: Document GL context dependencies. 2009-06-26 12:05:07 +02:00
Henri Verbeet 626baad817 wined3d: Make sure we have an active GL context before calling d3dfmt_p8_upload_palette(). 2009-06-26 12:05:00 +02:00
Henri Verbeet 1b306c25e2 wined3d: Make sure we have an active GL context before calling surface_remove_pbo(). 2009-06-26 12:04:57 +02:00
Henri Verbeet db5b126da6 wined3d: Make sure we have an active GL context in IWineD3DSurfaceImpl_UnLoad(). 2009-06-26 12:04:53 +02:00
Henri Verbeet 181442a6a2 wined3d: Make sure queries have an active GL context. 2009-06-26 12:04:48 +02:00
Stefan Dösinger d1cd08b7b3 wined3d: Honor WINED3DSPSM_NOT in ARB. 2009-06-26 12:02:29 +02:00
Stefan Dösinger 8fb1e2acfb wined3d: Jump to the else branch if cond is false, not endif. 2009-06-26 12:02:18 +02:00
Stefan Dösinger a07b50c94c wined3d: Support writemasks on texkill in ARB. 2009-06-26 12:02:12 +02:00
Stefan Dösinger 3a327908de wined3d: Initialize the used clip planes even if no clip emulation is used. 2009-06-26 12:02:07 +02:00
Stefan Dösinger 4d86eac60a wined3d: Unclamp vertex colors for 3.0 shaders in ARB if needed. 2009-06-26 12:02:01 +02:00
Stefan Dösinger f69fb5c011 wined3d: POW and LOG operate on the absolute value. 2009-06-26 12:01:54 +02:00
Stefan Dösinger bd14b6e2b4 wined3d: IFC requires GL_NV_fragment_program2. 2009-06-26 12:01:44 +02:00
Stefan Dösinger d4854b636c wined3d: Beware of double negations. 2009-06-26 12:01:36 +02:00
Tobias Jakobi a9f912466b wined3d: Force NP2 fixup constant reloading in shader_glsl_select. 2009-06-25 14:34:13 +02:00
Tobias Jakobi ef7f769be6 wined3d: Enable constant packing for NP2 texcoord fixup.
Previously every texture that was flagged for NP2 fixup used a vec2
uniform in the shader to store texture dimensions.  Turns out that the
GLSL compilers just maps vec2 to vec4, so essentially wasting 2
floats. The new code only uses vec4 uniforms but packs dimensions info
of 2 textures into a single uniform.
2009-06-25 14:34:13 +02:00
Tobias Jakobi 7906774339 wined3d: Add ps_np2fixup_info structure. 2009-06-25 14:34:13 +02:00
Henri Verbeet 4a137815db wined3d: Make sure we have an active GL context in IWineD3DDeviceImpl_SetCursorProperties(). 2009-06-25 11:47:34 +02:00
Henri Verbeet 5dcbc40581 wined3d: Make sure we have an active GL context in context_resource_released(). 2009-06-25 11:47:28 +02:00
Henri Verbeet 94cd8656ea wined3d: Make context_resource_released() responsible for activating a different GL context.
In case lastActiveRenderTarget is destroyed.
2009-06-25 11:47:24 +02:00
Henri Verbeet 964f4b0157 wined3d: Make sure we have an active GL context in buffer_PreLoad(). 2009-06-25 11:47:16 +02:00
Henri Verbeet 11fd358cc6 wined3d: Make sure we have an active GL context in delete_opengl_contexts(). 2009-06-25 11:47:09 +02:00
Henri Verbeet f98c6e3cff wined3d: Allow the existence of other shader types in get_loop_control_const(). 2009-06-24 11:28:50 +02:00
Henri Verbeet 943ed4e1e9 wined3d: Eliminate a redundant local variable in get_loop_control_const(). 2009-06-24 11:28:45 +02:00
Henri Verbeet aec6d319fa wined3d: Avoid a redundant copy. 2009-06-24 11:28:38 +02:00
Henri Verbeet fd8ebebe56 wined3d: Use a proper structure for "loop_control". 2009-06-24 11:28:33 +02:00
Henri Verbeet 4caf43ddb7 wined3d: Add some missing GL locking documentation to arb_program_shader.c. 2009-06-24 11:28:27 +02:00
Austin English a4f2d3d18e wined3d: Fix a compiler warning. 2009-06-24 11:25:09 +02:00
Stefan Dösinger e0ec956b3d wined3d: Fix pixelshader ifc.
The NVfp2 control flow uses the D3D syntax, and doesn't need the inversed
branch condition we're using in the vertex shader.
2009-06-23 15:53:00 +02:00
Stefan Dösinger 444b7ac7e5 wined3d: Use a local parameter for the position fixup.
I don't like that I have to do this because the posFixup is in all
vertex programs, so its at the same position and could be loaded
globally.  Unfortunately, there are only 256 env parameters usually,
which makes it impossible for any shader to use c256, even if it does
not use indirect addressing, and so we can't claim 256 constant
support.
2009-06-23 15:53:00 +02:00
Stefan Dösinger 7ffd10da28 wined3d: Find the clip texcoord before compiling.
The best is to put this together with the rest of the shader_arb_priv initialization.
2009-06-23 15:53:00 +02:00
Stefan Dösinger e64d48371f wined3d: Add a function to control use of NV_vp2 clipplanes.
I find it helpful for debugging to have this controlled at a central place,
without having to disable the entire GL extension or manually find all the
places where GL_SUPPORT(NV_VERTEX_PROGRAM2_OPTION) controls clipplane use. It
is useful for debugging the emulation code on NV cards and for debugging mac
driver issues.
2009-06-23 15:53:00 +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 114b5bdefb wined3d: Fix a comment.
This was actually broken by 122af07a30.
2009-06-23 11:48:10 +02:00
Gerald Pfeifer 569b448e13 wined3d: Fix logical condition in find_clip_texcoord(). 2009-06-22 13:25:27 +02:00
Henri Verbeet e5e4d1e9a7 wined3d: Add an rtInternal fallback for WINED3DFMT_R16G16_UNORM. 2009-06-22 12:59:21 +02:00
Henri Verbeet 404f4f7321 wined3d: Get rid of some asserts. 2009-06-22 12:59:16 +02:00
Henri Verbeet 7598ab2c84 wined3d: Get rid of DEBUG_SINGLE_MODE. 2009-06-22 12:59:04 +02:00
Henri Verbeet 9a58f37cd3 wined3d: Move the num_untracked_materials lookup out of the main drawing loop. 2009-06-22 12:58:59 +02:00
Henri Verbeet 37491bb5d1 wined3d: Simplify the transformed position fixup a bit. 2009-06-22 12:58:54 +02:00
Stefan Dösinger 95788401af wined3d: GLSL 1.20 includes gl_FragData[] syntax.
This means we don't have to enable ARB_draw_buffers explicitly.
2009-06-22 11:27:20 +02:00
Stefan Dösinger 3845b37a21 wined3d: Advertise SM 3.0 in ARB if the extensions are available. 2009-06-22 11:27:11 +02:00
Stefan Dösinger e211a0b4a4 wined3d: Enable Shader Model 2.0 in ARB.
If the needed constants are available, we can support all vs_2_0 and ps_2_0
requirements with the plain ARB extensions. We cannot however, run SM 2.0a or
SM 2.0b.
2009-06-22 11:27:05 +02:00
Stefan Dösinger e1c6b73e2d wined3d: Make the ARB index offset work with emulated MOVA. 2009-06-22 11:26:57 +02:00
Stefan Dösinger 77820d5ea5 wined3d: XXXC CC doesn't work even with NV_FP2 on. 2009-06-22 11:26:50 +02:00
Stefan Dösinger 26d17fe04c wined3d: Implement MRTs in ARB. 2009-06-22 11:26:43 +02:00
Stefan Dösinger bb8bcf5878 wined3d: Reload the first 8 constants on a 1.x and != 1.x ps switch.
ps 1.x constants are clamped to [-1;1], constants in >= 2.0 pshaders
are not. This means we have to reload constants when switching between
those shader types in ARB. In GLSL this is not a concern because
constants are tied to program objects and are reloaded on a shader
change anyway.
2009-06-22 11:26:33 +02:00
Stefan Dösinger 2364ce08e5 d3d9: Add a SGN test. 2009-06-22 11:26:14 +02:00
Stefan Dösinger 20401fa9af wined3d: Invalidate the srgb tex in surface::unload. 2009-06-22 11:25:57 +02:00
Robert Key 89b08bc6e2 wined3d: Add missing HD 3400 renderer string. 2009-06-19 14:54:58 +02:00
Stefan Doesinger 0188f96dd2 wined3d: Implement EvictManagedResources. 2009-06-19 14:54:04 +02:00
Stefan Doesinger b2f09fd204 wined3d: Emulate clipplanes in ARB if the NV extensions are not available.
This patch tries to find a free texture coordinate to load up to 4 clip
coordinates into the pixel shader, and uses KIL to throw away fragments
that are cut by a clipplane. If no free texture coordinate is found,
clipping is not done. If more than 4 clipplanes are used, only the first
4 are actually enabled. That should be pretty rare though.
2009-06-19 14:54:00 +02:00
Stefan Doesinger 7baf7c6518 wined3d: Implement vertex texture fetch in ARB. 2009-06-19 14:53:50 +02:00
Stefan Doesinger f1e97cdfbc wined3d: Don't run out of varyings because of clipplanes. 2009-06-19 14:53:43 +02:00
Stefan Doesinger b53b5909ff wined3d: Handle SM 3.0 varyings in ARB. 2009-06-19 14:53:20 +02:00
Henri Verbeet dcc490e82f wined3d: Don't load a rendertarget just because alpha test is enabled.
Unlike the depth test, the alpha test doesn't compare to the existing fragment
but against a reference value.
2009-06-19 13:52:47 +02:00