Commit Graph

3809 Commits

Author SHA1 Message Date
Henri Verbeet c0050b8ec9 wined3d: Restore the thread's GL context on context_release() if it wasn't created by wined3d.
The background on this is that some applications use OpenGL and DirectDraw/Direct3D on
the same thread, typically using OpenGL for rendering and DirectDraw to get
the amount of available video memory. This means that we might replace the
application's current GL context with one with a completely different state,
but also that our current GL context might not be what we think it is.
2009-10-28 11:15:59 +01:00
Henri Verbeet 98027cb535 wined3d: Call context_release() for wined3d contexts made current by context_create(). 2009-10-28 11:15:27 +01:00
Henri Verbeet eeb54b9922 wined3d: Keep better track of where we're using wined3d contexts.
The idea here is that we can restore the thread's current GL context on
context_release() if it doesn't correspond to the current wined3d context on
context_acquire().
2009-10-28 11:15:19 +01:00
Henri Verbeet 401173ffde wined3d: Restore the thread's previous GL context in context_destroy_gl_resources(). 2009-10-28 11:15:00 +01:00
Henri Verbeet 30d2660d99 wined3d: Restore the thread's previous GL context in WineD3D_ReleaseFakeGLContext(). 2009-10-27 10:55:35 +01:00
Henri Verbeet 94509f85b5 wined3d: Restore the wglMakeCurrent() call in context_destroy_gl_resources().
e3ca576576 removed this call because we don't
need it to tell if the context is valid, but we still need it to actually make
the context current.
2009-10-27 10:55:27 +01:00
Henri Verbeet 13c4fe72ad wined3d: Set a driver name appropriate for the vendor in init_driver_info(). 2009-10-27 10:55:09 +01:00
Henri Verbeet 26ba212407 wined3d: Apply PCI ID overrides in init_driver_info() instead of IWineD3DImpl_GetAdapterIdentifier(). 2009-10-27 10:54:57 +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
Stefan Dösinger 0c72464abf wined3d: Use the native constant limit for fitting private constants. 2009-10-26 11:42:36 +01:00
Stefan Dösinger 9ee6508132 wined3d: Remove dead code. 2009-10-26 11:42:29 +01:00
Stefan Dösinger f15fc8f41c wined3d: Take native constants into account when reporting ARB limits. 2009-10-26 11:42:20 +01:00
Stefan Dösinger 641d6681d4 wined3d: Use the ARB native constant limit in the GLSL-ARB constants quirk.
Geforce 8 and Geforce 9 cards support 256 env and 1024 native
constants. 1024 is the hardware limit we want to use if we overwrite
the GLSL reported value with the ARB value on Mac OS (because Mac OS
reports more constants than supported by HW on some cards).
2009-10-26 11:42:10 +01:00
Stefan Dösinger f9c4d442a9 wined3d: Get rid of the general shader constant limit. 2009-10-26 11:41:51 +01:00
Stefan Dösinger 70d6304a21 wined3d: Use the shader backend reported constant limit outside the shader backend. 2009-10-26 11:41:43 +01:00
Henri Verbeet 483d5d0a0d wined3d: Print an ERR instead of crashing in context_check_fbo_status().
Some version of Mesa will claim the window system provided framebuffer is
incomplete when using indirect rendering, although the framebuffer objects
spec says this can never happen. Printing an ERR instead of crashing should
make it clearer that this isn't a wined3d problem.
2009-10-26 11:20:52 +01:00
Henri Verbeet d03a105c1a wined3d: Fix a typo. 2009-10-26 11:20:44 +01:00
Henri Verbeet de82b55b20 wined3d: Refuse to parse shaders with an invalid version token. 2009-10-26 11:20:39 +01:00
Henri Verbeet 5fbe5ee027 wined3d: Add a separate structure for driver info. 2009-10-26 11:20:33 +01:00
Henri Verbeet 69bf130476 wined3d: Remove a redundant ActivateContext() call. 2009-10-26 11:20:26 +01:00
Henri Verbeet ade350b4d4 wined3d: Compare and copy the actual palette in palette9_changed() (Valgrind). 2009-10-23 12:03:37 +02:00
Henri Verbeet 53104ac1e7 wined3d: Don't use the stack as cursor mask (Valgrind). 2009-10-23 12:03:30 +02:00
Henri Verbeet 342a71b281 wined3d: Replace the "stateLookup" tables with a single "wrap_lookup" table. 2009-10-23 12:03:15 +02:00
Henri Verbeet a927573395 wined3d: Free the context array in IWineGDISwapChainImpl_Destroy() (Valgrind). 2009-10-22 10:46:20 +02:00
Henri Verbeet 8d2512317f wined3d: Free the blitter private data in arbfp_blit_free() (Valgrind). 2009-10-22 10:46:15 +02:00
Henri Verbeet 6be41fd59a wined3d: Get rid of GL_LIMITS. 2009-10-22 10:46:05 +02:00
Henri Verbeet 55047f811a wined3d: Fix some GLINFO_LOCATION abuse. 2009-10-22 10:45:57 +02:00
Henri Verbeet fa548414f9 wined3d: Free the shader buffer in shader_glsl_free() (Valgrind). 2009-10-21 16:05:57 +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 f2aaca2f67 wined3d: Rename WineD3DAdapter to wined3d_adapter. 2009-10-21 16:05:57 +02:00
Stefan Dösinger 122ed40c2b wined3d: Use ARB constant limits in ARB. 2009-10-20 14:46:16 +02:00
Stefan Dösinger 435646550b wined3d: Use GLSL constant limits in GLSL. 2009-10-20 14:46:13 +02:00
Stefan Dösinger 2d802af4d9 wined3d: Make shader specific constants accessible via GL_LIMITS. 2009-10-20 14:46:08 +02:00
Henri Verbeet 94d33d3e86 wined3d: Destroy FBO entries from the context that created them.
EXT_framebuffer_object doesn't specify if FBOs are shareable between GL
contexts, but ARB_framebuffer_object explicitly prohibits it.
2009-10-20 14:00:37 +02:00
Henri Verbeet e3ca576576 wined3d: Use context->valid in context_destroy_gl_resources().
Instead of relying on wglMakeCurrent() to do what we want.
2009-10-20 14:00:36 +02:00
Henri Verbeet 43aaaa8a4b wined3d: Validate the D3D context in FindContext().
Apparently it's valid to use a D3D device after its window is destroyed.
OpenGL isn't always so forgiving, so this patch is a first step to avoid
making GL calls on a context without window.
2009-10-20 14:00:36 +02:00
Henri Verbeet 0cb6f28751 wined3d: Get rid of the useless "isPBuffer" bitfield in struct wined3d_context. 2009-10-20 14:00:36 +02:00
Henri Verbeet adf5bb5f6a wined3d: Cleanup IWineD3DDeviceImpl_UpdateTexture().
The root problem here is that with the original error handling a NULL
dereference occurs (IWineD3DBaseTexture_GetType()) when either the source or
destination texture is NULL. Rewriting the error handling changes the
indentation of almost the entire function though, so this patch ends up
rewriting the entire function.
2009-10-19 11:45:45 +02:00
Henri Verbeet 9dd78e13d5 wined3d: Printing a FIXME once only works if the relevant BOOL is static (LLVM/Clang). 2009-10-16 13:37:21 +02:00
Henri Verbeet 594497f4bb wined3d: Simplify IWineD3DStateBlockImpl_Apply().
Consistently use the stateblock's contained states to determine what to apply.
2009-10-15 12:06:18 +02:00
Henri Verbeet ce10d5f186 wined3d: Don't apply more than num_contained_render_states in IWineD3DStateBlockImpl_Apply(). 2009-10-15 12:06:18 +02:00
Henri Verbeet bac6486520 wined3d: Merge some bitfields in struct SAVEDSTATES. 2009-10-14 11:26:44 +02:00
Henri Verbeet 1f029a30db wined3d: Simplify IWineD3DStateBlockImpl_Capture().
Consistently use the stateblock's contained states to determine what to
capture.
2009-10-14 11:26:38 +02:00
Henri Verbeet a24d14796a wined3d: Remove the useless "changed" and "enabledChanged" fields from struct wined3d_light_info. 2009-10-14 11:26:26 +02:00
Henri Verbeet 3bc9d1894d wined3d: Rename PLIGHTINFOEL to something less awful. 2009-10-14 11:26:17 +02:00
Henri Verbeet 580cd8c5bb wined3d: Get rid of stateblock_copy_values().
Use IWineD3DStateBlockImpl_Capture() for the initial stateblock capture
instead.
2009-10-14 11:26:02 +02:00
Henri Verbeet 8949a2c1ad wined3d: Remove some code that doesn't make sense.
This was introduced by abb11f30cd, but I don't
see how it could ever do something useful. Perhaps that's a lack of
imagination on my part, but the only situation in which device->stateBlock
should be NULL is while creating the initial stateblock, and in that case we
just returned in the line above. Setting the stream frequency of all streams
to 0x01010101 doesn't make sense either.
2009-10-13 11:38:28 +02:00
Henri Verbeet da5b491606 wined3d: Capture on a recorded stateblock doesn't record the vertexdeclaration in d3d9. 2009-10-13 11:38:28 +02:00
Henri Verbeet 526839068f wined3d: Vertex state stateblocks should also record the vertex declaration. 2009-10-13 11:38:28 +02:00
Jeff Zaroyko a1126242a7 wined3d: Fix prototype for set_texture_matrix. 2009-10-12 17:07:03 +02:00
Henri Verbeet 3dbfda1ab3 wined3d: Capture some more renderstates in vertex and pixel stateblocks. 2009-10-09 11:50:29 +02:00
Henri Verbeet 442beb1dcf wined3d: Clear resources that we aren't recording in stateblock_init(). 2009-10-09 11:50:29 +02:00
Stefan Dösinger 8a68f418db wined3d: Don't reserve clipping constants needlessly. 2009-10-08 12:03:50 +02:00
Stefan Dösinger ed2860f789 wined3d: Split the clip_parameters[2] array. 2009-10-08 12:03:42 +02:00
Stefan Dösinger 7f6ae94c0a wined3d: Don't write to result.color in arb_add_sRGB_correction.
add_sRGB_correction and the generate_pshader function generate the same MOV.
There's no need to do it in two places.
2009-10-08 12:03:30 +02:00
Henri Verbeet 2be38232ea wined3d: Remove some unused code. 2009-10-06 12:02:59 +02:00
Henri Verbeet 92d22ce535 wined3d: Move the SM1 opcode enum to shader_sm1.c. 2009-10-06 12:02:52 +02:00
Henri Verbeet 5c22971561 wined3d: Keep a reference to the vertex declaration initially captured by CreateStateBlock() as well. 2009-10-06 12:02:48 +02:00
Henri Verbeet b5de2fcb1c wined3d: Keep references to the textures initially captured by CreateStateBlock() as well. 2009-10-06 12:02:44 +02:00
Stefan Dösinger cb5ce03de4 wined3d: SetRenderTarget resets the scissor rect. 2009-10-02 15:06:57 +02:00
Stefan Dösinger 4a3f04cb56 wined3d: SetRenderTarget bypasses stateblock recording. 2009-10-02 15:06:57 +02:00
Stefan Dösinger 9e068a33b3 wined3d: SetRenderTarget doesn't change the viewport in d3d7. 2009-10-02 15:06:56 +02:00
Stefan Dösinger eda00d97ad d3d9: Test viewports that are bigger than the surface. 2009-10-02 15:06:38 +02:00
Stefan Dösinger dc45657f2c wined3d: Fix vs_2_0 sgn.
vs_2_0's sgn has two extra parameters - temporary registers for the
instruction. This patch fixes the crash of the d3d9:visual test on windows and
properly handles the vs_2_0 version of sgn.
2009-10-02 12:36:59 +02:00
Henri Verbeet 048c9450d9 wined3d: Use the actual array sizes to determine the number of the various pixel/vertex states. 2009-10-02 11:53:09 +02:00
Henri Verbeet 8b3f868774 wined3d: Move the pixel/vertex states arrays to stateblock.c. 2009-10-02 11:53:03 +02:00
Henri Verbeet a84974e2ea wined3d: Fix the values of NUM_SAVEDPIXELSTATES_T and NUM_SAVEDVERTEXSTATES_R. 2009-10-02 11:52:54 +02:00
Henri Verbeet 15d4eee58b wined3d: Use stateblock_init_contained_states() for WINED3DSBT_VERTEXSTATE stateblocks. 2009-10-02 11:52:49 +02:00
Henri Verbeet d500c9b795 wined3d: Add a separate function to initialize the saved states for WINED3DSBT_VERTEXSTATE. 2009-10-02 11:52:43 +02:00
Stefan Dösinger c749debec6 wined3d: Fix an error string. 2009-10-01 12:10:35 +02:00
Henri Verbeet 93c949eba5 wined3d: Use stateblock_init_contained_states() for WINED3DSBT_PIXELSTATE stateblocks. 2009-10-01 12:03:55 +02:00
Henri Verbeet 5a01619d31 wined3d: Add a separate function to initialize the saved states for WINED3DSBT_PIXELSTATE. 2009-10-01 12:03:49 +02:00
Henri Verbeet 841afe485e wined3d: Use stateblock_init_contained_states() for WINED3DSBT_ALL stateblocks. 2009-10-01 12:03:34 +02:00
Henri Verbeet c5029f83ec wined3d: Simplify stateblock_savedstates_set().
We only need to handle the case where "value" is TRUE, since the stateblock
data will be filled with zeroes by default.
2009-10-01 12:03:28 +02:00
Henri Verbeet 75fe879c76 wined3d: Get rid of stateblock_savedstates_copy().
This is redundant because we call stateblock_savedstates_set() further down.
2009-10-01 12:03:21 +02:00
Henri Verbeet be0b7355fc wined3d: Add a separate function for initializing the "contained_*" fields from the "changed" field. 2009-09-30 14:31:59 +02:00
Henri Verbeet 5f3425b89b wined3d: Get rid of stateblock_copy(). 2009-09-30 14:31:59 +02:00
Henri Verbeet 345b329217 wined3d: Add a separate function for copying stateblock values. 2009-09-30 14:31:58 +02:00
Henri Verbeet 844dda20ff wined3d: Make some internal stateblock function arguments const. 2009-09-30 14:31:58 +02:00
Henri Verbeet 5737efe71a wined3d: Explicitly pass gl_info to stateblock_savedstates_set(). 2009-09-30 14:31:58 +02:00
Henri Verbeet 49f712beff wined3d: Explicitly pass gl_info to stateblock_savedstates_copy(). 2009-09-29 14:22:34 +02:00
Henri Verbeet 6d3e5a9cce wined3d: Pass IWineD3DStateBlockImpl pointers to stateblock_copy(). 2009-09-29 14:22:34 +02:00
Henri Verbeet 4ed126f5dc wined3d: Clear the correct "activeLights" array in stateblock_copy(). 2009-09-29 14:22:34 +02:00
Henri Verbeet 664057ce6a wined3d: Add a separate function for state block initialization. 2009-09-29 14:22:34 +02:00
Henri Verbeet 6a7b97b617 wined3d: Fix a typo. 2009-09-29 14:22:34 +02:00
Stefan Dösinger 404aecb8da wined3d: Test if result.clip[] works correctly.
The Mac Nvidia driver doesn't implement the result.clip part of
GL_NV_vertex_program2_option correctly. It complains about a syntax
error if "result.clip[0]" is used. "result.clip" compiles correctly, but
supports only one clipplane, and running the shader results in severe
rendering bugs.
2009-09-28 17:33:07 +02:00
Stefan Dösinger 77a83aee79 wined3d: Don't use GL_NV_texture_shader on OSX. 2009-09-28 17:32:54 +02:00
Henri Verbeet f9786d7eda wined3d: Just use the actual array size as argument to memcpy() in stateblock_copy(). 2009-09-28 12:38:39 +02:00
Henri Verbeet 26db0be136 wined3d: Cleanup IWineD3DDeviceImpl_SetTexture() a bit. 2009-09-28 12:38:32 +02:00
Henri Verbeet f6bf219013 wined3d: Remove some redundant code in IWineD3DVertexDeclarationImpl_Release().
The situation the code tests for should never happen because either the
stateblock will still have a reference to the vertex declaration, or the
stateblock itself will be released.
2009-09-28 12:38:25 +02:00
Henri Verbeet dca3c6e7c6 wined3d: Keep vertex declaration references in the stateblock. 2009-09-28 12:38:18 +02:00
Henri Verbeet 709aedf5f9 wined3d: Properly keep texture references in the stateblock. 2009-09-28 12:38:12 +02:00
Henri Verbeet cd96c6e355 wined3d: Release the stateblock before destroying the GL context. 2009-09-25 15:15:49 +02:00
Henri Verbeet 47c84f4f7f wined3d: Use the DXGI naming convention for all formats. 2009-09-25 15:15:44 +02:00
Henri Verbeet a25ac586c6 wined3d: Add a state handler for WINED3DRS_SOFTWAREVERTEXPROCESSING. 2009-09-25 15:15:08 +02:00
Henri Verbeet c64da00de7 wined3d: Rename IWineD3DDevice::GetIndices() to IWineD3DDevice::GetIndexBuffer(). 2009-09-25 15:14:52 +02:00
Henri Verbeet 60e32659a7 wined3d: Rename IWineD3DDevice::SetIndices() to IWineD3DDevice::SetIndexBuffer(). 2009-09-25 15:14:44 +02:00
Henri Verbeet f88c6e5ce5 wined3d: Move common shader fields to IWineD3DBaseShaderClass. 2009-09-25 15:14:35 +02:00
Henri Verbeet 77086e8e84 wined3d: Remove SetFunction() from the public shader interface. 2009-09-25 15:14:26 +02:00
Henri Verbeet d76c7a8521 wined3d: Move some common shader functions to the IWineD3DBaseShader interface. 2009-09-25 15:14:17 +02:00