Henri Verbeet
60e98cc3ad
wined3d: Don't use filtering on textures that need complex fixups in swapchain_blit().
...
For example, interpolating palette indices doesn't have the desired result.
Should we really want filtering for these cases we could implement it inside
the relevant shaders, after the fixup, but I doubt it's worth the effort.
2010-03-17 10:06:03 +01:00
Henri Verbeet
c48adfe201
wined3d: Use "gl_filter" in the non-FBO path of swapchain_blit() as well.
2010-03-17 10:05:59 +01:00
Henri Verbeet
78166b0b23
wined3d: Implement SetDestWindowOverride() by simply making the context current on a different window.
2010-03-16 11:45:15 +01:00
Henri Verbeet
cd9a8b74b9
wined3d: Store the device window in the swapchain.
...
The swapchain's current window might be changed by SetDestWindowOverride().
2010-03-16 11:45:11 +01:00
Henri Verbeet
18ec2525a4
wined3d: Store the swapchain instead of the surface in the context.
2010-03-16 11:44:44 +01:00
Henri Verbeet
8a107bc63a
wined3d: Kill pbuffer offscreen rendering support.
...
Our pbuffer support is broken, nobody cares.
2010-03-15 15:55:38 +01:00
Henri Verbeet
ba8e6f713b
wined3d: Use the HDC from the acquired context to call SwapBuffer().
...
These should be the same, but this way the relation is clearer.
2010-02-05 10:06:21 +01:00
Henri Verbeet
d0afc7567b
wined3d: Call SetDestWindowOverride() before acquiring a context.
2010-02-05 10:06:17 +01:00
Henri Verbeet
daf0aeb34a
wined3d: Make sure all contexts are finished drawing before calling SwapBuffers().
...
This causes a small performance hit when multiple GL contexts are used. As an
optimization we could use ARB_sync to only wait for the last draw call instead
of all GL commands.
2010-01-28 11:08:07 +01:00
Henri Verbeet
ee1f2c4654
wined3d: Don't leak the context array in the swapchain_init() error path.
2010-01-20 15:29:57 +01:00
Henri Verbeet
ce2c3ea6c7
wined3d: Handle source and destination rectangles in IWineD3DSwapChainImpl_Present().
2010-01-04 11:41:29 +01:00
Henri Verbeet
b5907e23cc
wined3d: Add support for source and destination rectangles to swapchain_blit().
2010-01-04 11:41:29 +01:00
Henri Verbeet
7160e56ab1
wined3d: Properly check for glBlitFramebuffer().
...
ARB_framebuffer_object can also provide this entry point.
2009-12-28 12:27:13 +01:00
Henri Verbeet
b49e684f5d
wined3d: Focus the focus window.
2009-12-23 14:27:29 +01:00
Henri Verbeet
a0aa10eb5c
wined3d: Filter messages for the device's focus window instead of the swapchain's device window.
...
Usually these will be the same window, but they don't have to be.
2009-12-23 14:27:29 +01:00
Stefan Dösinger
718e55b9a6
wined3d: Don't render single buffered swapchains to a FBO.
2009-12-16 12:42:40 +01:00
Henri Verbeet
cd623036fc
wined3d: Mark the draw buffer as dirty in context_create().
...
Currently callers of this function are responsible for setting the draw buffer
correctly, but they don't do a very good job:
- swapchain_init() sets the draw buffer to GL_BACK if there's a back buffer,
even though the context's target is always the front buffer.
- swapchain_create_context_for_thread() depends on (eventually) being called
by FindContext().
- create_primary_opengl_context() and
IWineD3DSwapChainImpl_SetDestWindowOverride() don't bother setting a draw
buffer at all.
Just marking the draw buffer dirty lets the context management sort it all
out, and is much simpler.
2009-12-16 12:22:29 +01:00
Stefan Dösinger
2ee6bb1cbb
wined3d: Frontbuffers are onscreen.
2009-12-15 11:58:53 +01:00
Henri Verbeet
c24e48d937
wined3d: Filter window messages generated by switching to fullscreen and back.
2009-12-15 11:43:56 +01:00
Henri Verbeet
0e270bbd22
wined3d: Send window messages through the swapchain before sending them to the application.
2009-12-15 11:43:41 +01:00
Henri Verbeet
6bf79b885f
wined3d: Let the context handle the draw buffer in swapchain_blit().
2009-12-14 12:04:05 +01:00
Henri Verbeet
cb076db8cc
wined3d: Move IWineD3DDeviceImpl_RestoreWindow() to swapchain.c.
2009-12-11 12:16:25 +01:00
Henri Verbeet
542590cfc9
wined3d: Move IWineD3DDeviceImpl_SetupFullscreenWindow() to swapchain.c.
2009-12-11 12:16:25 +01:00
Henri Verbeet
a9f2613d13
wined3d: Add a separate function for swapchain initialization.
2009-12-11 12:16:25 +01:00
Henri Verbeet
b3defd4c80
wined3d: Rename "wineD3DDevice" to "device".
2009-12-10 11:54:47 +01:00
Stefan Dösinger
548b0bcda5
wined3d: Render to a FBO if the window size is changed.
2009-12-07 14:33:32 +01:00
Stefan Dösinger
817714912b
wined3d: Infrastructure to render swapchains to a FBO.
2009-12-07 14:33:24 +01:00
Henri Verbeet
111307dfba
wined3d: Get rid of the GL_SUPPORT macro.
2009-10-29 13:09:33 +01:00
Henri Verbeet
e6ca176a48
wined3d: Rename DestroyContext() to context_destroy().
2009-10-28 11:16:05 +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
47c84f4f7f
wined3d: Use the DXGI naming convention for all formats.
2009-09-25 15:15:44 +02:00
Henri Verbeet
a5214c306f
wined3d: Don't free D3D surfaces until the wined3d surface is destroyed.
...
This prevents for example a d3d9 depth stencil from being destroyed when it
has no external references but is still in use by the device/stateblock. A
nice side effect is that it simplifies handling of "implicit" surfaces like
the frontbuffer and backbuffers, as well as the forwarding of reference counts
for surfaces that are part of a texture.
2009-09-16 13:04:32 -05: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
7165bd19c1
wined3d: WINED3DTEXF_NONE only makes sense as a mip filter.
2009-08-05 11:20:43 +02:00
Henri Verbeet
da1e5573da
wined3d: Rename WineD3DContext to struct wined3d_context.
2009-08-03 15:01:48 +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
2c71b85334
wined3d: Explicitly pass the context to get_drawable_size().
2009-07-24 13:10:37 +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
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
6d8e1e52c8
wined3d: Avoid destroying the currently active context for non-implicit swapchains.
2009-07-08 20:14:25 +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
2dc7fc2916
wined3d: Remove the format field from IWineD3DResourceClass.
2009-03-13 11:29:19 +01:00
Andrew Talbot
33e0d1610a
wined3d: Sign-compare warnings fix.
2008-12-02 14:12:39 +01:00
Marcus Meissner
f1271f846b
wined3d: Output the rectangles in the debug message.
2008-12-01 14:01:21 +01:00
Stefan Dösinger
93af8d3631
d3d: Do not restore the display mode in ddraw.
2008-11-03 13:34:13 +01:00
Alexandre Julliard
6cfef95ce7
wined3d: Convert source files to utf-8.
2008-10-18 19:21:20 +02:00
Henri Verbeet
9d192c6251
wined3d: Skip copying the depth stencil if it's discarded.
...
This gives a small performance improvement for applications that are
smart enough to set the D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL flag, or
to create depth stencils with Discard set to TRUE.
2008-09-23 12:25:18 +02:00
Stefan Dösinger
3d49e8cd5e
wined3d: Add a swapchain method to set the dest override.
...
DDraw can draw to the front buffer only, thus there's never a Present
call which could pass this window. Due to that a drawing-independent
method is needed.
2008-08-19 12:25:20 +02:00
Stefan Dösinger
7f2b8f9bba
wined3d: Support redirecting the primary context.
2008-08-19 12:21:49 +02:00
Stefan Dösinger
e5de2fc82c
wined3d: Move some swapchain code into a base class.
2008-08-19 12:20:47 +02:00
Stefan Dösinger
b0c4673779
wined3d: Update the surface locations in Present.
2008-08-05 14:09:37 +02:00
Stefan Dösinger
851dd7339e
wined3d: Implement overlay flipping.
2008-08-05 14:09:36 +02:00
Stefan Dösinger
8d930f6009
wined3d: Restore the gamma when destroying the swapchain.
2008-07-02 12:27:05 +02:00
Francois Gouget
633ee950a1
Assorted spelling fixes.
2008-05-07 12:07:11 +02:00
Stefan Dösinger
b1d8af7926
wined3d: Update copyright lines.
2008-04-02 20:22:42 +02:00
Stefan Dösinger
cd858dfa22
wined3d: Disable the SWAPEFFECT_DISCARD clear.
2007-12-18 13:23:00 +01:00
Stefan Dösinger
7f10ee453a
wined3d: Use the adapter to read the display mode.
2007-12-11 12:14:35 +01:00
Stefan Dösinger
9bc6200ece
wined3d: Add a method for querying the gl drawable size of rendertarget.
2007-12-04 14:32:39 +01:00
Stefan Dösinger
c698052b31
wined3d: Destroy GL contexts before changing the screen resolution.
2007-11-16 13:23:15 +01:00
Stefan Dösinger
a34c1f948b
wined3d: Free the backbuffer array.
2007-11-07 12:08:46 +01:00
Stefan Dösinger
4d4fce7e33
wined3d: Disconnect allocatedMemory and Heap allocation.
2007-11-01 12:38:37 +01:00
Stefan Dösinger
dcff7dc213
wined3d: Begin centralizing surface location management.
2007-10-26 15:17:19 +02:00
Roderick Colenbrander
001f380ac9
wined3d: CreateContext should not be called between ENTER_GL/LEAVE_GL.
2007-10-01 12:35:36 +02:00
Stefan Dösinger
271fb0052f
wined3d: Add support for showing a logo.
2007-09-14 14:26:00 +02:00
Roderick Colenbrander
ad692f2a83
wined3d: Add PBO support for dynamically locked surfaces.
2007-09-13 11:00:47 +02:00
Roderick Colenbrander
5754726aeb
wined3d: Use the proper depth stencil format.
2007-08-13 12:36:55 +02:00
Roderick Colenbrander
ac3927a73e
wined3d: Move over to WGL.
2007-08-08 15:32:01 +02:00
Roderick Colenbrander
e77da5ef8a
wined3d: Don't call ActivateContext between ENTER_GL/LEAVE_GL.
2007-08-07 12:36:32 +02:00
Stefan Dösinger
38c7e9356e
wined3d: Present requires the swapchain's context.
2007-08-06 12:05:50 +02:00
H. Verbeet
2785395080
wined3d: glXSwapBuffers needs a GLX context.
2007-07-19 11:57:16 +02:00
Stefan Dösinger
b462ff0876
wined3d: Create multiple contexts for onscreen render targets.
2007-07-03 12:32:33 +02:00
Stefan Dösinger
078523f73e
wined3d: Present does not clear the depth stencil.
2007-06-14 13:22:19 +02:00
Stefan Dösinger
c9b8a79e0b
wined3d: Implement vertical refresh sync.
2007-06-14 13:21:54 +02:00
Stefan Dösinger
43fda1f4f0
wined3d: Only swap system memory resources of front and back buffer if they have the same size.
2007-06-14 13:20:53 +02:00
H. Verbeet
e49c480820
wined3d: Don't try to clear the depth stencil if there is none.
2007-04-17 11:13:03 +02:00
Stefan Dösinger
725057da47
d3d: Remove dependency on ddraw.h header.
2007-04-16 13:20:15 +02:00
Stefan Dösinger
290f2eb146
wined3d: Add Filtering to IWineD3DSurface::Blt and handle it.
...
This is to allow StretchRect to pass the texture filter to WineD3D.
DirectDraw sets the texture filter to WINED3DTEXF_NONE, simmilar to all
other functions which do not need filtering.
2007-04-07 10:58:10 +02:00
Stefan Dösinger
90fe64cee0
wined3d: Store an array of contexts in the swapchain.
...
This is a preparation for using multiple contexts on one drawable to
handle multithreading.
2007-03-19 12:23:16 +01:00
Stefan Dösinger
fcb83e7111
wined3d: Activate a context before doing opengl calls.
2007-03-19 12:22:57 +01:00
Andrew Talbot
2f5f3825c6
wined3d: Replace inline static with static inline.
2007-03-17 20:04:46 +01:00
Stefan Dösinger
c54a0fc2cf
wined3d: Rework surface dirtification.
...
Previously the surfaces stored a flag if the system memory copy was
ahead of the gl copy(SFLAG_DIRTY) or the gl copy is
ahead(SFLAG_GLDIRTY). The pbuffer copy was 'managed' differently using
SFLAG_INPBUFFER and SFLAG_INTEXTURE.
This patch replaces them with 3 flags, INSYSMEM, INPBUFFER and
INTEXTURE which specify which copy contains the most up to date
copy. It is perfectly valid to have more than one of those flags
set. One must be set at least (except at init, when no content is in
the surface yet). When one copy is modified, the flags for the others
are removed.
2007-03-07 12:18:14 +01:00
Stefan Dösinger
5916fdd560
wined3d: Remove an outdated TODO comment.
...
BltFast takes care of activating the correct context nowadays.
2007-02-19 13:02:19 +01:00
H. Verbeet
a4bc52a89c
wined3d: Fix WINED3DPRESENT_PARAMETERS and use it instead of D3DPRESENT_PARAMETERS.
2007-02-16 12:31:03 +01:00
Stefan Dösinger
8e84127aed
wined3d: Restore the display mode when releasing a swapchain.
2007-02-15 16:56:02 +01:00
Stefan Dösinger
ae3327334d
wined3d: Swap the SFLAG_DIBSECTION flag when swaping hdc and memory.
2007-02-14 12:29:29 +01:00
Stefan Dösinger
f5f501d573
wined3d: Use the context manager to create onscreen contexts.
2007-02-13 12:08:02 +01:00
Stefan Dösinger
12252d0589
wined3d: Use the context manager to select the primary render target.
2007-02-13 12:05:35 +01:00
Stefan Dösinger
222c531b1a
wined3d: Count the framerate per swapchain, not globally.
2007-01-10 22:00:47 +01:00
Alexandre Julliard
656fc93815
Use GetDC instead of CreateDC where possible.
2007-01-02 17:16:36 +01:00
H. Verbeet
8355b1a501
wined3d: Allow the device to store multiple render targets.
2006-12-20 12:31:40 +01:00
Dmitry Timoshkov
47ffd7ae95
wined3d: Make some data const.
2006-12-14 20:11:41 +01:00
Markus Amsler
cb8652947a
d3d: Callback infrastructure for implicit render target destruction in IWineD3DSwapChain.
2006-12-06 12:39:00 +01:00
Markus Amsler
f8e7ddd798
Revert "d3d: Remove AddRef from IWineD3DDevice_GetBackBuffer.".
...
This reverts commit 478a414e58
.
2006-11-30 16:04:00 +01:00
Markus Amsler
c40501db50
Revert "d3d: Remove AddRef from IWineD3DDevice_GetSwapChain.".
...
This reverts commit f84f687e6d
.
2006-11-30 16:03:59 +01:00
Markus Amsler
f84f687e6d
d3d: Remove AddRef from IWineD3DDevice_GetSwapChain.
2006-11-22 11:40:50 +01:00
Markus Amsler
478a414e58
d3d: Remove AddRef from IWineD3DDevice_GetBackBuffer.
2006-11-22 11:39:52 +01:00
Francois Gouget
30e44c85c8
Assorted spelling fixes.
2006-11-07 15:25:24 +01:00
Ivan Gyurdiev
b1df1d8320
wined3d: Add D3DCLEAR codes to the WINED3D namespace.
2006-10-31 12:09:46 +01:00
Karsten Elfenbein
4ada8a5e26
wined3d: Fix the FrontBuffer content capturing.
2006-10-20 10:19:39 +02:00