Commit Graph

533 Commits

Author SHA1 Message Date
Riccardo Bortolato e15e2569a8 wined3d: Call wined3d_texture_decref() instead of wined3d_surface_decref() in swapchain_gl_present().
Signed-off-by: Riccardo Bortolato <rikyz619@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-06 14:46:13 +09:00
Riccardo Bortolato 53f795af0a wined3d: Make wined3d_swapchain_get_front_buffer_data work with wined3d_texture and sub_resource_idx.
Signed-off-by: Riccardo Bortolato <rikyz619@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-20 00:30:38 +09:00
Stefan Dösinger 973de3f59c wined3d: Pass a context to surface_load_location.
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-16 19:56:42 +09:00
Stefan Dösinger ebd6bf7f7a wined3d: Remove old surface flipping hacks.
They're non-functional these days anyway.
2015-09-08 21:59:16 +09:00
Stefan Dösinger 2936e4ac54 wined3d: Remove wined3d_backbuffer_type. 2015-09-08 21:59:16 +09:00
Stefan Dösinger fa0041954f wined3d: Return a texture from the swapchain resource creation callback. 2015-09-04 20:01:05 +09:00
Stefan Dösinger f010e5d88a wined3d: Return a texture from wined3d_swapchain_get_back_buffer. 2015-09-03 21:11:07 +09:00
Stefan Dösinger c4e4647ca5 d3d9: Validate swap effect and backbuffer count. 2015-08-27 21:43:46 +09:00
Henri Verbeet fca2d19423 dxgi: Implement dxgi_swapchain_ResizeBuffers(). 2015-08-07 23:44:19 +09:00
Henri Verbeet 2735947d76 wined3d: Introduce a separate function to resize swapchain buffers. 2015-08-07 23:44:14 +09:00
Matteo Bruni 6521fc78be wined3d: Use the correct texture coordinates in swapchain_blit() in the non-glBlitFramebuffer, NP2 case. 2015-07-09 17:18:22 +09:00
Stefan Dösinger 2d56694445 wined3d: Implement color keying in arbfp_blit. 2015-04-10 21:43:12 +09:00
Stefan Dösinger 19c860499a wined3d: Filter messages generated by focus handling. 2014-12-08 14:18:43 +01:00
Stefan Dösinger f103247ddf wined3d: Add a comment about reset during focus change. 2014-12-02 13:05:54 +01:00
Stefan Dösinger f4d520d6e2 wined3d: Don't minimize hidden windows. 2014-11-20 22:31:26 +09:00
Stefan Dösinger 09a91231a6 wined3d: Set the device window size on focus window activation. 2014-11-20 22:31:13 +09:00
Stefan Dösinger f6dde70624 wined3d: Restore the display mode on focus change. 2014-11-19 17:56:44 +09:00
Stefan Dösinger 45d530461b wined3d: Minimize device windows on focus loss. 2014-11-17 17:36:12 +09:00
Henri Verbeet 1800712298 wined3d: Track texture coordinate normalization per-texture. 2014-10-09 17:36:21 +02:00
Henri Verbeet 07985a8c38 wined3d: Use rendertarget views for depth/stencil buffers instead of surfaces.
I don't think the difference between d3d10 depth/stencil and rendertarget
views is large enough to justify a separate type. Unfortunately that does make
the name "wined3d_rendertarget_view" slightly awkward.
2014-08-22 12:53:11 +02:00
Henri Verbeet d3387cf77b wined3d: Keep a reference to the backbuffer textures instead of the surfaces in the swapchain. 2014-08-20 13:29:53 +02:00
Henri Verbeet ec87407e7c wined3d: Keep a reference to the frontbuffer texture instead of the surface in the swapchain. 2014-08-20 13:29:52 +02:00
Henri Verbeet 415b803720 wined3d: Use the texture draw binding instead of the surface draw binding. 2014-08-20 13:29:50 +02:00
Henri Verbeet aa7016054a wined3d: Move the "swapchain" field from struct wined3d_surface to struct wined3d_texture. 2014-08-20 13:29:47 +02:00
Henri Verbeet 1ce3269ac1 wined3d: Replace surface_update_draw_binding() with wined3d_resource_update_draw_binding(). 2014-08-20 13:29:45 +02:00
Henri Verbeet 5ef8e97414 wined3d: Move the "draw_binding" field from struct wined3d_surface to struct wined3d_resource. 2014-08-04 14:23:52 +02:00
Henri Verbeet d079066f5d wined3d: Get rid of the get_drawable_size() callback in struct wined3d_surface. 2014-08-04 14:23:49 +02:00
Stefan Dösinger 9d49b7a9be wined3d: Set palettes on the swapchain. 2014-06-30 22:04:53 +02:00
Stefan Dösinger b81e560531 wined3d: Migrate surfaces to the new location flags. 2014-01-17 18:10:10 +01:00
Stefan Dösinger beb64c9998 wined3d: Separate surface locations and flags. 2014-01-17 18:10:08 +01:00
Stefan Dösinger adf0ab2ad8 wined3d: Give the DIB section its own location. 2014-01-14 20:18:24 +01:00
Stefan Dösinger f6403b4ac0 wined3d: Do not use surface->resource.allocatedMemory. 2014-01-14 20:18:23 +01:00
Stefan Dösinger 353b3ba6d3 wined3d: Don't lock directly into the DIB. 2014-01-14 20:18:22 +01:00
Henri Verbeet 51cdeeacd4 wined3d: Explicitly request alpha testing for blitting the cursor and logo textures to screen. 2014-01-10 12:06:09 +01:00
Henri Verbeet ddae20b689 wined3d: Fix up the backbuffer count on failure in swapchain_init(). 2014-01-08 14:34:12 +01:00
Henri Verbeet 38495706b7 wined3d: Remove the render target check in x11_copy_to_screen(). 2013-12-11 15:14:38 +01:00
Henri Verbeet 660bc8b717 wined3d: Print the WINED3D_SWAP_EFFECT_FLIP FIXME only once.
The comment is also outdated.
2013-12-06 13:14:52 +01:00
Stefan Dösinger 047ce3af6e wined3d: Remove partial surface update support.
This has only ever worked for render targets, and only through the
glDrawPixels codepath, which was removed long ago.
2013-11-20 16:54:39 +01:00
Henri Verbeet 7e8897b7b8 wined3d: Get rid of the redundant texture_name and texture_name_srgb fields in struct wined3d_surface. 2013-11-20 11:28:22 +01:00
Henri Verbeet 505951e32d wined3d: Create a proper texture for the software cursor. 2013-11-18 11:20:40 +01:00
Henri Verbeet 94509fbd59 wined3d: Create a texture for the logo surface. 2013-11-14 16:21:02 +01:00
Henri Verbeet 3ad8989614 wined3d: Introduce a function for safely releasing a DC. 2013-11-04 11:05:43 +01:00
Stefan Dösinger 9331c791e8 wined3d: Remove the D3DSWAPEFFECT_DISCARD debug clear code. 2013-10-08 15:39:02 +02:00
Henri Verbeet 602c82bce8 wined3d: Send present operations through a command stream.
The eventual goal is to have a multithreaded implementation of wined3d_cs_ops
and offload some processing to a different thread.
2013-09-27 10:33:15 +02:00
Henri Verbeet d21c26e4f6 wined3d: Get rid of surface_modify_location(). 2013-09-10 11:09:53 +02:00
Henri Verbeet b62915dabb wined3d: Replace surface_modify_location(surface, location, FALSE) calls with surface_invalidate_location(). 2013-09-10 11:09:51 +02:00
Henri Verbeet 6325f3ddd8 wined3d: Don't set WINED3DUSAGE_RENDERTARGET on the front buffer.
We never render directly to the front buffer, and in case of e.g. a P8 front
buffer, we would fail surface creation if we were to enforce format
restrictions.
2013-09-04 11:37:01 +02:00
Henri Verbeet b5e0c5d052 wined3d: Get rid of some leftover comments referring to the GL lock. 2013-09-02 18:02:26 +02:00
Stefan Dösinger 4dd4a6913b wined3d: Add a function for allocating aligned resource memory. 2013-08-21 19:53:20 +02:00
Henri Verbeet 7e7bd87b2c wined3d: Store the original display mode in the swapchain. 2013-08-20 11:50:28 +02:00
Henri Verbeet 390543dd02 wined3d: Use the "adapter" local variable in swapchain_init(). 2013-08-19 12:53:21 +02:00
Henri Verbeet 13a38e8d5e wined3d: Pass a wined3d_resource_desc structure to device_parent_create_swapchain_surface(). 2013-06-04 10:14:28 +02:00
Henri Verbeet a3f59cf618 wined3d: Allow textures as swapchain surfaces. 2013-06-03 11:30:43 +02:00
Michael Stefaniuc 50a9fb579c wined3d: Remove ERR() on HeapAlloc failure for small sizes known at compile time. 2013-02-06 09:04:41 +01:00
Henri Verbeet 31e8976910 wined3d: Get rid of the surface_type parameter to wined3d_swapchain_create(). 2013-01-16 12:22:57 +01:00
Henri Verbeet 78984cf46c wined3d: Get rid of ENTER_GL / LEAVE_GL. 2012-12-11 12:03:39 +01:00
Alexandre Julliard 13f126498b wined3d: Call wglSwapBuffers through the GL driver function table. 2012-12-06 14:10:04 +01:00
Stefan Dösinger 7b95df03c6 wined3d: Bind the src in a manual presentation blit. 2012-12-05 12:47:33 +01:00
Henri Verbeet adddf10cd8 wined3d: wined3d_swapchain_get_desc() never fails. 2012-10-04 14:09:55 +02:00
Henri Verbeet 5fcc1f8f70 wined3d: Just return the surface from wined3d_swapchain_get_back_buffer(). 2012-10-04 14:09:50 +02:00
Henri Verbeet e55416a113 wined3d: wined3d_swapchain_set_window() never fails. 2012-10-03 11:19:41 +02:00
Ričardas Barkauskas 06a8cbcc35 wined3d: Don't leave leftover textures when destroying and creating dxgi swapchains. 2012-09-25 11:20:05 +02:00
Henri Verbeet 894d161891 wined3d: Call core GL functions through gl_info.gl_ops as well. 2012-07-25 20:10:08 +02:00
Alexandre Julliard d7250e97ed wined3d: Fetch GL functions from the WGL driver table, including glFinish and glFlush. 2012-07-20 13:21:27 +02:00
Henri Verbeet 2bfc5214be ddraw: Implement ddraw7_GetScanLine() on top of wined3d_get_adapter_raster_status(). 2012-07-19 15:43:11 +02:00
Henri Verbeet 0821c8024b wined3d: Merge the device parent create_rendertarget() and create_depth_stencil() handlers. 2012-07-11 09:57:07 -05:00
Henri Verbeet 8ad98cdbee wined3d: Get rid of the "discard" parameter to device_parent_create_depth_stencil(). 2012-07-10 10:39:42 -05:00
Henri Verbeet 9b74ebd794 wined3d: Get rid of the "lockable" parameter to device_parent_create_rendertarget(). 2012-07-10 10:39:34 -05:00
Henri Verbeet 256d433164 d3d9: Implement d3d9_device_PresentEx(). 2012-06-29 10:14:21 +02:00
Henri Verbeet 0ce894f274 d3d9: Implement d3d9_device_GetDisplayModeEx(). 2012-06-28 01:39:28 +02:00
Henri Verbeet 2c8834dffd d3d9: Implement d3d9_GetAdapterDisplayModeEx(). 2012-06-28 01:39:27 +02:00
Henri Verbeet a1bfd0988f wined3d: Take scanline ordering into account in the mode setting code. 2012-06-28 01:39:26 +02:00
Henri Verbeet 0f0fe49240 wined3d: Implement mode setting in the adapter instead of the device. 2012-06-22 16:13:58 +02:00
Francois Gouget 19ba80e7c2 wined3d: We must include Wine's port.h before using NAN. 2012-06-01 17:41:52 +02:00
Henri Verbeet 5ec56c9bc4 wined3d: Get rid of SFLAG_LOCKED. 2012-05-21 21:30:56 +02:00
Francois Gouget fac36c55e9 Assorted typo, spelling, wording and case fixes. 2012-05-15 16:26:43 +02:00
Henri Verbeet 3ba95e2f3e wined3d: Move the present() back buffer check to the common wined3d_swapchain_present() code. 2012-04-16 12:05:09 +02:00
Henri Verbeet 6f8b8bda2d wined3d: Load the backbuffer in the correct location before presenting in swapchain_gl_present(). 2012-03-27 11:39:19 +02:00
Matteo Bruni b51a657626 wined3d: Use a separate flag for discarded surfaces. 2012-02-02 15:18:09 +01:00
Henri Verbeet 3769afa33d wined3d: Get rid of the WINED3DSURFTYPE typedef. 2012-01-20 13:31:33 +01:00
Akihiro Sagawa bd97589dba wined3d: Let GetRasterStatus return D3D_OK, again. 2012-01-19 11:55:48 +01:00
Henri Verbeet e53a277305 wined3d: Get rid of the WINED3DPOOL typedef. 2012-01-18 12:37:38 +01:00
Henri Verbeet 6a5a098b23 wined3d: Get rid of the WINED3DRESOURCETYPE typedef. 2012-01-18 12:37:38 +01:00
Henri Verbeet e70990041b wined3d: Get rid of the WINED3DTEXTUREFILTERTYPE typedef. 2012-01-13 17:34:31 +01:00
Matteo Bruni c6c5c6905e wined3d: Handle discarded depth-stencil surfaces with SFLAG_LOST.
SFLAG_INSYSMEM is already set by surface_add_dirty_rect() for all
surfaces anyway.
2012-01-13 17:34:30 +01:00
Henri Verbeet 3d33887c2f wined3d: Get rid of the WINED3DSWAPEFFECT typedef. 2012-01-06 19:24:22 +01:00
Henri Verbeet 45f6def784 wined3d: Get rid of the WINED3DBACKBUFFER_TYPE typedef. 2012-01-06 19:24:21 +01:00
Henri Verbeet 3082c1a9de wined3d: Get rid of the WINED3DRENDERSTATETYPE typedef. 2011-12-20 10:11:47 +01:00
Henri Verbeet 360c1114d6 wined3d: Get rid of the WINED3DRASTER_STATUS typedef. 2011-12-02 11:51:33 +01:00
Henri Verbeet 94c9b0b4fc wined3d: Get rid of the WINED3DPRESENT_PARAMETERS typedef. 2011-12-02 11:51:29 +01:00
Henri Verbeet d1327bbefe wined3d: Get rid of the WINED3DDEVICE_CREATION_PARAMETERS typedef. 2011-11-28 16:40:47 +01:00
Henri Verbeet 2e1c0d83c1 wined3d: Get rid of the WINED3DGAMMARAMP typedef. 2011-11-22 10:52:45 +01:00
Henri Verbeet 18a7653c78 wined3d: Get rid of the WINED3DDISPLAYMODE typedef. 2011-11-17 11:37:26 +01:00
Henri Verbeet e0a0d611af wined3d: Pass a wined3d_color struct to wined3d_device_clear(). 2011-11-16 09:41:53 +01:00
Henri Verbeet a44401af0f wined3d: x11_copy_to_screen() shouldn't be called on mapped surfaces. 2011-11-14 15:25:21 +01:00
Henri Verbeet d6b432b068 wined3d: Get rid of client_memory from wineD3DSurface_DIB. 2011-11-08 09:50:23 +01:00
Henri Verbeet 335a6ca78e wined3d: Use wined3d_surface_blt() in swapchain_gl_present(). 2011-11-03 13:00:50 +01:00
Henri Verbeet 0b3185665f wined3d: Use wined3d_surface_blt() in wined3d_swapchain_get_front_buffer_data(). 2011-11-03 13:00:45 +01:00
Henri Verbeet 7de4df9fd9 wined3d: Get rid of the wined3d_surface_bltfast() export. 2011-10-31 23:52:47 +01:00
Marcus Meissner f90d402610 wined3d: Fixed sizeof (Coverity). 2011-10-17 17:45:03 +02:00
Henri Verbeet 66637ea35c wined3d: Don't print the context recreation FIXME for FBO ORM.
With FBOs we can just render offscreen to an appropriate depth/stencil buffer.
2011-09-13 09:19:46 +02:00
Henri Verbeet c89a3ffe80 ddraw: Get rid of the surface implementation switching code. 2011-08-31 19:42:52 +02:00
Henri Verbeet 641f52ef96 wined3d: Add multisampling support. 2011-08-26 11:28:47 +02:00
Matteo Bruni e53ae83d74 wined3d: Pass around the context instead of gl_info. 2011-08-25 11:31:55 +02:00
Henri Verbeet f0d8f2aa89 wined3d: Use draw_binding in swapchain_gl_present(). 2011-08-25 11:31:53 +02:00
Henri Verbeet e57b20c215 wined3d: Keep track of a surface's "draw location". 2011-08-24 11:58:14 +02:00
Henri Verbeet 620c81dc76 wined3d: Add a registry key to disable rendering swapchains onscreen.
We'll probably want to make this default to TRUE at some point, but at least
for the moment there still seem to be some performance advantages to rendering
onscreen in most cases.
2011-08-24 11:58:14 +02:00
Henri Verbeet 9de5372036 wined3d: Introduce a function to update a swapchain's render_to_fbo field. 2011-08-23 16:53:51 +02:00
Henri Verbeet 33fafc6166 wined3d: Get rid of context_bind_fbo() calls outside context.c. 2011-08-01 11:16:12 +02:00
Henri Verbeet c2ede1d4c8 wined3d: Only invalidate state for the current context in swapchain_blit(). 2011-07-27 11:51:50 +02:00
Henri Verbeet 2b789778fd wined3d: Make the swapchain parameter to swapchain_blit() const. 2011-07-15 10:08:21 +02:00
Henri Verbeet a86785d065 wined3d: Make the swapchain parameter to x11_copy_to_screen() const. 2011-07-12 11:35:05 +02:00
Henri Verbeet 4671f86cd6 wined3d: Make the context parameter to the get_drawable_size() callback const. 2011-07-07 12:31:34 +02:00
Henri Verbeet 590505c0a4 wined3d: Make context_create() work if the window is already destroyed. 2011-07-06 11:14:16 +02:00
Stefan Dösinger cd96c59d91 wined3d: Track framebuffer changes. 2011-07-05 17:33:43 +02:00
Henri Verbeet b1664a2c85 wined3d: Get rid of some IWineD3D* references. 2011-07-04 13:44:41 +02:00
Henri Verbeet ebcf08e59a wined3d: Properly destroy contexts not owned by the implcit swapchain.
In particular, set num_contexts to 0 in the swapchain that owns the contexts.
2011-06-28 10:18:37 -05:00
Henri Verbeet c8f26a1345 wined3d: Rename IWineD3DDeviceImpl_MarkStateDirty() to device_invalidate_state(). 2011-06-06 16:18:41 +02:00
Piotr Pawłow bc9407a452 wined3d: Set container of swapchain surfaces to WINED3D_CONTAINER_NONE in swapchain_init() error path. 2011-06-02 16:22:44 +02:00
Henri Verbeet aba42d1fa5 wined3d: Introduce a separate structure for framebuffer state. 2011-05-19 10:07:57 +02:00
Henri Verbeet 3032b40c80 wined3d: Get rid of the IWineD3DDeviceParent interface. 2011-05-19 10:06:21 +02:00
Alexandre Julliard 599d09b08c wined3d: Always create the software cursor. 2011-05-17 10:17:31 +02:00
Henri Verbeet 0e0e5c3e38 wined3d: Get rid of the IWineD3DDevice typedefs. 2011-05-17 10:06:23 +02:00
Henri Verbeet 8d4ca1f815 wined3d: Remove COM from the device implementation. 2011-05-17 10:06:18 +02:00
Henri Verbeet 00a5f38595 wined3d: Remove object creation methods from the IWineD3DDevice interface. 2011-05-11 14:56:48 +02:00
Francois Gouget 5920de5ffb Assorted spelling and case fixes. 2011-05-09 12:09:27 +02:00
Henri Verbeet c4b73c4550 wined3d: Get rid of the IWineD3DSurface typedefs. 2011-04-29 16:52:13 +02:00
Henri Verbeet 1c1de920e3 wined3d: Remove COM from the surface implementation. 2011-04-29 16:52:13 +02:00
Matteo Bruni a3c12c5be4 wined3d: Fallback to our private window when context activation fails otherwise. 2011-04-20 16:31:48 +02:00
Henri Verbeet d30da7ae39 wined3d: Get rid of the IWineD3DSwapChain typedefs. 2011-04-14 17:13:57 +02:00
Henri Verbeet 3ec19590d5 wined3d: Remove COM from the swapchain implementation. 2011-04-14 17:13:57 +02:00
Henri Verbeet 178061d3c1 wined3d: Merge the GL and GDI swapchain vtbls. 2011-04-14 17:13:56 +02:00
Henri Verbeet 7ace689742 wined3d: Take hDestWindowOverride into account in IWineGDISwapChainImpl_Present(). 2011-04-13 14:13:52 +02:00
Henri Verbeet 926dfc5c49 wined3d: Merge the IWineD3DSwapChain::SetDestWindowOverride() implementations. 2011-04-13 14:13:51 +02:00
Henri Verbeet 3068ae9e83 wined3d: Remove IWineD3DSwapChain::Destroy() from the public interface. 2011-04-13 14:13:51 +02:00
Henri Verbeet 84103460bd wined3d: Check FBO completeness after the read / draw buffers are specified.
Unless the driver implements ARB_ES2_compatibility / GL4.1, FBO completeness
depends on what read / draw buffers are set.
2011-04-11 11:50:51 +02:00
Henri Verbeet dd2c7d0d8c wined3d: Don't free D3D swapchains until the wined3d swapchain is destroyed.
This will allow us the get rid of the swapchain refcounting hacks in d3d9 in
particular. This is similar to the way we handle resources that are still in
use by a stateblock, but aren't referenced anywhere by the application.
2011-04-08 14:40:48 +02:00
Henri Verbeet d19c3588bc wined3d: Merge the IWineD3DSwapChain::Destroy() implementations.
They're mostly the same, except for the GL version also destroying its
contexts, and being a bit more careful about the order in which backbuffers
are destroyed.
2011-04-08 14:40:43 +02:00
Henri Verbeet 28137ba2e9 wined3d: Only create a swapchain context array for GL swapchains.
Lying about the number of contexts a swapchain has isn't very useful.
2011-04-08 14:40:39 +02:00
Henri Verbeet 032c374307 wined3d: Merge swapchain_base.c into swapchain.c. 2011-04-07 19:27:01 +02:00
Henri Verbeet 0a174ae542 wined3d: Merge swapchain_gdi.c into swapchain.c. 2011-04-07 19:26:50 +02:00
Henri Verbeet 85f2348549 wined3d: Get rid of the IWineD3DBase requirement for surface_set_container().
This made sense back when we needed the container's parent and didn't know the
container's type, but neither of those is true anymore.
2011-03-28 17:08:52 +02:00
Henri Verbeet ac9c592ca9 wined3d: Store all the resource desc information in struct wined3d_resource. 2011-03-09 12:29:17 +01:00
Henri Verbeet 36d4268e3c wined3d: Remove COM from IWineD3D. 2011-02-02 12:22:42 +01:00
Henri Verbeet 6f95f05aaf wined3d: Move swapchain context retrieval to swapchain.c. 2011-01-20 12:18:58 +01:00
Henri Verbeet b439fa9d8f wined3d: Pass an IWineD3DSwapChainImpl pointer to swapchain_create_context_for_thread(). 2011-01-19 12:22:38 +01:00
Andrew Nguyen 7e13b1afaf wined3d: Remove references to GLX_SGI_video_sync.
Usage of GLX_SGI_video_sync is problematic, and wined3d cannot use GLX extensions.
2010-12-27 15:39:41 +01:00
Henri Verbeet 0e3c60786e wined3d: Explicitly pass gl_info to unset_shader(). 2010-12-10 13:02:26 +01:00
Henri Verbeet ae7a20af2f wined3d: Explicitly pass blit_priv and gl_info to set_shader(). 2010-12-10 13:02:24 +01:00
Henri Verbeet 03f7a2d88e wined3d: Get rid of the remaining "Flags". 2010-11-23 13:15:36 +01:00
Henri Verbeet 027fdb31c2 wined3d: Rename the IWineD3DSurfaceImpl "Flags" field to "flags". 2010-11-12 15:43:07 +01:00
Henri Verbeet 7e3985e1fe ddraw: Setup the device window in SetCooperativeLevel(). 2010-11-08 13:30:54 +01:00
Henri Verbeet 45cee64295 wined3d: Move the fullscreen window setup / restore code to the device. 2010-11-08 13:30:40 +01:00
Henri Verbeet 0b15963b4e wined3d: Get rid of redundant comparisons against FALSE. 2010-09-14 11:43:44 -05:00
Henri Verbeet b68d257710 wined3d: Get rid of redundant comparisons against NULL / 0. 2010-09-14 09:43:33 -05:00
Henri Verbeet f49028d91c wined3d: GL_DRAW_FRAMEBUFFER depends on either ARB_framebuffer_object or EXT_framebuffer_blit. 2010-09-08 13:31:37 +02:00
Henri Verbeet bc2db78c3a wined3d: Explicitly document some more consequences of GL locking policy.
The basic rule is that you can't call anything that takes the user32 / gdi32
lock while under the GL (winex11) lock. As a consequence, you can't call
anything like context_acquire() or context_destroy() either.
2010-09-03 11:05:10 +02:00
Henri Verbeet 6c4c351791 wined3d: Don't require wined3d object parents to be COM objects. 2010-09-01 14:01:02 +02:00
Henri Verbeet 3a7f08a56f wined3d: Rename wined3d_format_desc to wined3d_format. 2010-08-31 14:23:47 +02:00
Henri Verbeet c568916f9e wined3d: Implicit depth/stencil surfaces don't have a container.
They're owned by the device instead of the swapchain.
2010-08-31 14:23:47 +02:00
Henri Verbeet b233e7b301 wined3d: Rename the "format" field in wined3d_format_desc to "id". 2010-08-26 12:41:44 +02:00
Henri Verbeet cc5271d1b7 wined3d: Rename WINED3DFORMAT to wined3d_format_id. 2010-08-24 12:25:01 +02:00
Henri Verbeet 3fd66bc650 wined3d: Make some lookup tables const. 2010-08-23 12:04:36 +02:00
Henri Verbeet 8292c687d8 wined3d: Get rid of the now redundant SFLAG_SWAPCHAIN surface flag. 2010-08-17 11:55:32 +02:00
Henri Verbeet 0b24db5db5 wined3d: Also store the subresource container type. 2010-08-17 11:55:32 +02:00
Henri Verbeet 61db577a4b wined3d: Remove SetContainer() from the public IWineD3DSurface interface. 2010-08-17 11:55:32 +02:00
Matteo Bruni 20f51c29a9 wined3d: Setup target if offscreen rendering setting changed. 2010-07-26 18:38:33 +02:00
Henri Verbeet 943fb2fb57 wined3d: Do RGB <=> sRGB transfers using FBO blits.
Concept based on a patch by Stefan.
2010-07-26 18:38:31 +02:00
Henri Verbeet 3d8ff7f27a wined3d: Framebuffer blits are affected by the color mask. 2010-07-22 10:13:36 +02:00
Henri Verbeet f7760656f3 wined3d: Remove LoadLocation() from the public wined3d surface interface. 2010-07-22 10:13:24 +02:00
Henri Verbeet 147f24dd78 wined3d: Remove ModifyLocation() from the public wined3d surface interface. 2010-07-22 10:13:13 +02:00
Henri Verbeet 1b5cc39a86 wined3d: Get rid of some dead code. 2010-06-01 11:03:56 +02:00
Dan Kegel f99e1d80e2 wined3d: Fix size of buffer in swapchain_create_context_for_thread(). 2010-05-31 12:46:08 +02:00
Henri Verbeet e8ac9bbd7f wined3d: Get rid of GLINFO_LOCATION. 2010-05-25 13:29:00 +02:00
Henri Verbeet bcc4603125 wined3d: Set the swapchain.c GLINFO_LOCATION to *gl_info. 2010-05-24 11:31:25 +02:00
Henri Verbeet 7bec8e1dcb wined3d: Correctly translate between coordinate systems in swapchain_blit(). 2010-05-18 18:42:09 +02:00
Henri Verbeet 7a2debe113 wined3d: Use the FBO cache in swapchain_blit(). 2010-05-06 14:17:30 +02:00
Stefan Dösinger ec3d2ba316 wined3d: Fall back to other depth stencil formats if D24S8 isn't supported. 2010-05-04 13:15:00 +02:00
Henri Verbeet 49e076eabd wined3d: Separate context acquisition and state application. 2010-05-04 13:14:59 +02:00
Henri Verbeet f09b8e454d wined3d: Avoid some needless depth buffer copies.
If an application switches between render targets of a different size, but
with the same depth/stencil surface it'll typically clear the depth/stencil
surface before drawing. However, in case of the smaller render target that
wouldn't be a full clear, so we'd have to do a depth copy if we also switched
between onscreen and offscreen rendering. Keeping track of which part of the
depth/stencil surface is current for onscreen/offscreen allows us to avoid
most of these kinds of copies. The current scheme requires the current/dirty
rectangle to have an origin at (0,0). This could be extended to an arbitrary
rectangle, but the bookkeeping becomes somewhat more complex in that case, and
it's not clear that there would be much of a benefit at this point.
2010-04-29 10:19:39 -05:00
Henri Verbeet d977e91b11 wined3d: Store back buffer surfaces as IWineD3DSurfaceImpl pointers in the swapchain. 2010-04-27 12:02:14 -05:00
Henri Verbeet 62acb2fdbc wined3d: Store the front buffer surface as an IWineD3DSurfaceImpl pointer in the swapchain. 2010-04-27 12:01:59 -05:00
Henri Verbeet 6b34b8e6d1 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_acquire(). 2010-04-22 11:28:17 +02:00
Henri Verbeet 1c403e44b5 wined3d: Store the current render target as an IWineD3DSurfaceImpl pointer in the context. 2010-04-22 11:28:12 +02:00
Henri Verbeet 7b47dabd09 wined3d: Avoid some unnecessary invalidations of the the onscreen depth buffer.
This can happen for example when the application switches to a different
depth/stencil for offscreen rendering and back again.
2010-04-21 11:57:32 +02:00
Henri Verbeet c5de1e1045 wined3d: Store the depth/stencil surface as an IWineD3DSurfaceImpl pointer in the device. 2010-04-20 11:14:42 +02:00
Henri Verbeet 520f74de21 wined3d: Store the auto depth/stencil surface as an IWineD3DSurfaceImpl pointer in the device. 2010-04-20 11:14:35 +02:00
Henri Verbeet efb3993a3a wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_modify_ds_location(). 2010-04-19 14:55:24 +02:00
Henri Verbeet 95130a7d5e wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_attach_surface_fbo(). 2010-04-16 12:09:36 +02:00
Henri Verbeet 65797d7f75 wined3d: Get rid of glRect from IWineD3DSurfaceImpl.
604caf0caa supposedly removed the "oversized
texture" code, but this was still left over.
2010-04-16 12:09:14 +02:00
Roderick Colenbrander 3b6aea5934 wined3d: Move palette uploading code over to arbfp blit_shader. 2010-04-06 13:53:15 +02:00
Stefan Dösinger dc918d4394 wined3d: Use FBOs when the onscreen depth stencil format isn't suitable.
This allows proper support of float depth buffers when rendering to onscreen surfaces.
2010-03-31 16:12:32 +02:00
Stefan Dösinger 19b6f5ca75 wined3d: Control the onscreen depth stencil format in the swapchain.
This allows the swapchain to know what depth format its window contexts have to see if the
requested depth format is compatible or a FBO fallback is needed, and it will be needed to
set the onscreen format to the requested auto depth stencil format instead of the
let's-hope-it-fits D24_UNORM_S8_UINT format.
2010-03-31 16:12:31 +02:00
Henri Verbeet 3aaa6ee6e7 wined3d: Rename GlPixelFormatDesc to wined3d_format_desc. 2010-03-19 14:31:47 +01:00
Henri Verbeet 7c930589bc wined3d: Avoid some common invalid context accesses.
Unfortunately there are plenty of other places left. Perhaps we should
consider creating our own window when the context becomes invalid and making
the context current on that instead.
2010-03-18 10:25:09 +01:00
Henri Verbeet 570f865bad wined3d: Don't use framebuffer blit for backbuffer formats with fixups in swapchain_blit(). 2010-03-17 10:06:06 +01:00
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