Commit Graph

711 Commits

Author SHA1 Message Date
Henri Verbeet db0784e1da wined3d: Introduce a separate function for translating front buffer coordinates to GL coordinates. 2010-05-21 14:37:52 +02:00
Henri Verbeet a2a58a21d8 wined3d: Translate front buffer coordinates in surface_blt_to_drawable(). 2010-05-20 13:47:53 +02:00
Henri Verbeet f0888577c5 wined3d: Use wine_dbgstr_rect() for tracing the rectangle in IWineD3DSurfaceImpl_LockRect(). 2010-05-19 16:57:59 +02:00
Roderick Colenbrander f892003194 wined3d: Set conversion flags for format descriptors having a convert function. 2010-05-17 14:43:49 +02:00
Henri Verbeet 79145e215b wined3d: Add support for shadow samplers. 2010-05-17 13:19:53 +02:00
Henri Verbeet 44ab3d70f1 wined3d: Handle depth/stencil surfaces in IWineD3DSurfaceImpl_LoadLocation(). 2010-05-17 13:19:40 +02:00
Roderick Colenbrander b60961ae55 wined3d: Use surface_prepare_texture for surface allocation in read_from_framebuffer_texture. 2010-05-11 11:04:55 +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 83cf1ce8e1 wined3d: Check if the depth/stencil surface has any valid location at the start of surface_load_ds_location(). 2010-04-28 07:32:05 -05:00
Henri Verbeet 0d86323778 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_release_client_storage(). 2010-04-28 07:31:28 -05:00
Henri Verbeet 23a377f02b wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_init_sysmem(). 2010-04-28 07:31:13 -05:00
Henri Verbeet 42375518ba wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_add_dirty_rect(). 2010-04-27 12:02:39 -05:00
Henri Verbeet f78d85ffe1 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_set_texture_target(). 2010-04-27 12:02:31 -05:00
Henri Verbeet 294d9dae8f wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_set_texture_name(). 2010-04-27 12:02:24 -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 32b1f25f4b wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_force_reload(). 2010-04-26 09:04:56 -05:00
Henri Verbeet 553f429964 wined3d: Simply pass IWineD3DSurfaceImpl pointers to IWineD3DSurfaceImpl_BltOverride(). 2010-04-26 09:04:48 -05:00
Henri Verbeet d1ea48b971 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_internal_preload(). 2010-04-26 09:04:35 -05:00
Henri Verbeet bea50a39de wined3d: Simply pass an IWineD3DSurfaceImpl pointer to fb_copy_to_texture_hwstretch(). 2010-04-25 07:28:18 -05:00
Henri Verbeet 99994f885c wined3d: Simply pass an IWineD3DSurfaceImpl pointer to fb_copy_to_texture_direct(). 2010-04-25 07:28:07 -05:00
Henri Verbeet 9308c5499f wined3d: Make sure all texture levels are allocated in surface_prepare_texture().
This fixes a regression introduced by commit
af7dfcd378.
2010-04-25 07:27:36 -05:00
Henri Verbeet 6b34b8e6d1 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_acquire(). 2010-04-22 11:28:17 +02:00
Henri Verbeet 660ad06692 wined3d: Simply pass implementation pointers to stretch_rect_fbo(). 2010-04-21 11:57:32 +02:00
Henri Verbeet 79a014a505 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_get_gl_buffer(). 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 c7a1848656 wined3d: Store render targets as IWineD3DSurfaceImpl pointers in the device. 2010-04-20 11:14:30 +02:00
Henri Verbeet 92a44884c7 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_set_compatible_renderbuffer(). 2010-04-19 14:55:35 +02:00
Henri Verbeet 03dc612c9c wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_is_offscreen(). 2010-04-19 14:55:31 +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 ae46589f53 wined3d: Simply pass an IWineD3DSurfaceImpl pointer to surface_load_ds_location(). 2010-04-19 14:55:19 +02:00
Henri Verbeet 10c5a8ac9e wined3d: Get rid of "myDevice". 2010-04-19 14:55:13 +02:00
Henri Verbeet 24c93d48aa wined3d: Simply pass an IWineD3DSurfaceImpl pointer to context_attach_depth_stencil_fbo(). 2010-04-16 12:09:39 +02:00
Henri Verbeet bc2850a587 wined3d: Get rid of the width and height parameters to surface_upload_data(). 2010-04-16 12:09:27 +02:00
Henri Verbeet 212bfab2df wined3d: Get rid of the width and height parameters to surface_allocate_surface(). 2010-04-16 12:09:23 +02:00
Henri Verbeet 7f6ab3c06e wined3d: The currentDesc and pow2 width/height are the same for power of two textures. 2010-04-16 12:09:19 +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 bf58d81968 wined3d: Remove paletteOverride from BltOverride offscreen->render_target blit.
This code was needed when the destination uses 8-bit and the source lacked a palette.
Since we don't allow destination fixups, this code doesn't do anything. At a later
stage something like this should perhaps be readded to specific backends.
2010-04-15 17:03:59 +02:00
Roderick Colenbrander 4cb6255907 wined3d: We don't need color keying for sysmem->drawable uploads. 2010-04-15 17:03:52 +02:00
Roderick Colenbrander 2a949ec323 wined3d: Remove call to d3dfmt_get_conv from read_from_framebuffer_texture. 2010-04-15 17:03:49 +02:00
Roderick Colenbrander 1a61f46bbb wined3d: Remove temporary conv_byte_count fixup from d3dfmt_get_conv. 2010-04-15 17:03:47 +02:00
Roderick Colenbrander bccfd7cc06 wined3d: Add BLT_OP_COLOR_FILL to blit_supported and use it in BltOverride. 2010-04-15 14:20:48 +02:00
Roderick Colenbrander 4c87bc0c41 wined3d: Move A4L4 conversion to the formats table. 2010-04-14 18:00:47 +02:00
Roderick Colenbrander cda78c01e6 wined3d: Move G16R16/R16G16F conversion to the formats table. 2010-04-14 18:00:47 +02:00
Henri Verbeet 8eb2a2cf0c wined3d: Disable strict draw ordering by default.
While some performance hit from the extra flushes was expected and would be
acceptable, the performance hit can be over 50% on some configurations, which
clearly isn't acceptable. This patch introduces a "StrictDrawOrdering"
registry key for applications affected by this, until we have a more
structural solution.
2010-04-13 21:13:36 +02:00
Roderick Colenbrander e35f54ef1f wined3d: Move R32G32F convertion to the formats table. 2010-04-13 17:56:35 +02:00
Roderick Colenbrander 5c635f4146 wined3d: Move D15S1 over to the formats table. 2010-04-13 17:56:32 +02:00
Roderick Colenbrander 6a081ef95a wined3d: Move D24X4S4 to the formats table. 2010-04-13 17:56:29 +02:00
Roderick Colenbrander 485040bb5c wined3d: Move D24FS8 to formats table. 2010-04-13 17:56:27 +02:00
Roderick Colenbrander 798ba56c1b wined3d: Move L6V5U5 conversion to the formats table. 2010-04-13 17:56:24 +02:00
Roderick Colenbrander 76a9712779 wined3d: Add an initial implementation of arbfp_blit_surface. 2010-04-09 16:50:21 +02:00
Roderick Colenbrander f1ca14cb5b wined3d: Add an initial fbo_blit_supported implementation. 2010-04-09 16:50:21 +02:00
Roderick Colenbrander 7df7ce40c3 wined3d: Move X8L8V8U8 surface conversion to the format table. 2010-04-09 16:50:21 +02:00
Roderick Colenbrander 60c6294f84 wined3d: Move Q8W8V8U8 conversion to the format table. 2010-04-09 16:50:20 +02:00
Roderick Colenbrander d7e1b973c7 wined3d: Start moving texture format fixups to the formats table. 2010-04-09 16:50:20 +02:00
Roderick Colenbrander a4559e761b wined3d: Move srgb checks away from d3dfmt_get_conv. 2010-04-09 16:50:20 +02:00
Roderick Colenbrander 00598c3e36 wined3d: Let d3dfmt_get_conv return a wined3d_format_desc. 2010-04-09 16:50:20 +02:00
Roderick Colenbrander 1c02a909e5 wined3d: Remove remaining redundant code from d3dfmt_get_conv. 2010-04-08 17:34:18 +02:00
Roderick Colenbrander 2c5eee25ca wined3d: Only apply float R16G16F/R32G32F fixup when ARB_texture_rg isn't around and remove redundant code. 2010-04-07 18:14:05 +02:00
Roderick Colenbrander edcdbc2a76 wined3d: Remove redundant gl format/type code from d3dfmt_get_conv since it is already in the table. 2010-04-07 18:13:49 +02:00
Roderick Colenbrander e7a71e15b5 wined3d: Turn blit_shader color_fixup_supported into blit_supported. 2010-04-07 18:13:35 +02:00
Henri Verbeet 83443273c1 wined3d: Pass the correct window to Present() in IWineD3DSurfaceImpl_Flip(). 2010-04-07 13:50:16 +02:00
Henri Verbeet 3b7774b37b wined3d: Pass the correct window to Present() in IWineD3DSurfaceImpl_BltOverride(). 2010-04-07 13:50:12 +02:00
Roderick Colenbrander e6ae272efe wined3d: Due to code rewrites is_color_fixup_supported is not needed anymore in RealizePalette.
The code in question should be executed in all cases. This also fixes
palette refresh issues when shaders / paletted textures aren't around.
2010-04-06 13:55:14 +02:00
Roderick Colenbrander 1f2976a302 wined3d: Move the arbfp p8 fixup to the format table and get rid of the d3dfmt_get_conv override. 2010-04-06 13:55:02 +02:00
Roderick Colenbrander a5a4be4fc5 wined3d: Disable framebuffer to texture blitting.
The current code doesn't work for this at all and causes major
rendering issues in e.g. C&C. I don't think we should fix this code
either since it isn't worth the effort and requires evil things like
paletteOverride.
2010-04-06 13:54:47 +02:00
Roderick Colenbrander 69902ab6d0 wined3d: Move EXT_PALETTED_TEXTURE code over to ffp_blit. 2010-04-06 13:53:21 +02:00
Roderick Colenbrander 3b6aea5934 wined3d: Move palette uploading code over to arbfp blit_shader. 2010-04-06 13:53:15 +02:00
Roderick Colenbrander ae8d9e21e3 wined3d: Remove the swapchain parameter from fb_copy_to_texture_hwstretch in order to unify all blit calls. 2010-04-02 15:22:51 +02:00
Roderick Colenbrander ff82e66a69 wined3d: Move upsideDown calculation to blit implementation. 2010-04-02 15:22:51 +02:00
Roderick Colenbrander c6f0ddcb1a wined3d: Remove some unneeded source rectangle calculations from BltOverride. 2010-03-31 16:12:30 +02:00
Roderick Colenbrander 87b5b2f738 wined3d: Remove the last use of the WINED3DRECT destination rectangle in BltOverride. 2010-03-31 16:12:30 +02:00
Roderick Colenbrander 40f3f0b041 wined3d: Use RECT instead of WINED3DRECT in fb_copy_to_texture_hwstretch. 2010-03-31 16:12:29 +02:00
Roderick Colenbrander 7f1f61e28e wined3d: Use RECT instead of WINED3DRECT in fb_copy_to_texture_direct. 2010-03-31 16:12:28 +02:00
Roderick Colenbrander ae26d9defd wined3d: Use RECT instead of WINED3DRECT in stretch_rect_fbo. 2010-03-31 16:12:27 +02:00
Roderick Colenbrander c864ae6348 wined3d: Disable flipping through the source rectangle in BltOverride. 2010-03-30 14:10:45 +02:00
Roderick Colenbrander 334fea7d79 wined3d: Fix a destination flipping bug using the destination rectangle. 2010-03-30 14:10:37 +02:00
Roderick Colenbrander a91f844a3d wined3d: Use RECT instead of WINED3DRECT in more parts of BltOverride. 2010-03-30 13:54:45 +02:00
Roderick Colenbrander 682c969e9a wined3d: Add a helper function for getting a valid rectangle. 2010-03-30 13:54:35 +02:00
Roderick Colenbrander a7d3b616c4 wined3d: Add color_fill to blit_shader. 2010-03-30 13:54:24 +02:00
Roderick Colenbrander 9a1fd552d2 wined3d: Introduce a helper function which converts a color from the surface format to ARGB. 2010-03-30 13:54:12 +02:00
Roderick Colenbrander 5ffb088975 wined3d: Fix depth blit regression. 2010-03-22 11:40:40 +01:00
Henri Verbeet 3aaa6ee6e7 wined3d: Rename GlPixelFormatDesc to wined3d_format_desc. 2010-03-19 14:31:47 +01:00
Roderick Colenbrander fb8812db89 wined3d: Get rid of d3dfmt_get_conv in RealizePalette. 2010-03-19 13:15:26 +01:00
Roderick Colenbrander 27a96e477a wined3d: Start moving paletted texture support to the blit_shader. 2010-03-19 13:15:21 +01:00
Roderick Colenbrander fd99ab78c2 wined3d: Use draw_textured_quad in BltOverride. 2010-03-19 13:15:06 +01:00
Roderick Colenbrander 4bd627cc7f wined3d: Add a helper function for drawing a textured quad. 2010-03-19 13:15:03 +01:00
Henri Verbeet e5673ddbc3 wined3d: Add a quirk to rebind FBOs when one of their attached textures is updated.
Updating a texture while it is attached to the currently bound FBO is
something GL implementations tend to get wrong. NVIDIA fails at
glTexSubImage2D(), fglrx and Mesa with glTexImage2D(). I'm afraid to try what
happens on OS X. Fortunately we never use glTexImage2D() while a texture is
attached to an FBO, so we only need to care about glTexSubImage2D().
2010-03-18 10:24:41 +01:00
Henri Verbeet bd4fb33a52 wined3d: Unify GLINFO_LOCATION in surface.c. 2010-03-18 10:24:33 +01:00
Henri Verbeet 0ae49c35fb wined3d: Use the context's window handle in IWineD3DSurfaceImpl_BltOverride(). 2010-03-16 11:44:55 +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
Roderick Colenbrander 604caf0caa wined3d: Remove oversize texture support. 2010-03-15 14:23:15 +01:00
Roderick Colenbrander 74bf524a99 wined3d: Use surface_get_blt_info to compute texture coordinates for surface_blt_to_drawable. 2010-03-15 14:22:57 +01:00
Roderick Colenbrander 360384277b wined3d: Extend surface_get_depth_blt_info with texture coordinate code from surface_blt_to_drawable. 2010-03-15 14:22:44 +01:00
Roderick Colenbrander c0ef7a1a93 wined3d: Move the 8-bit palette shader code over to the blit_shader backend. 2010-03-03 12:53:51 +01:00
Stefan Dösinger 5c4d3fb5a2 wined3d: Control SFLAG_CONVERTED in surface_prepare_texture.
This makes sure that the flag is set correctly when
surface_allocate_surface is called and client storage is disabled
properly for converted surfaces.
2010-02-17 16:50:38 +01:00
Henri Verbeet af7dfcd378 wined3d: Do not preload surfaces when attaching them to an FBO.
Just make sure the texture is allocated, so we have something to attach. Note
also that context_apply_attachment_filter_states() runs under the GL lock, so
preloading resources is actually unsafe there.
2010-02-04 13:39:26 +01:00
Henri Verbeet 02e0b3ae1a wined3d: Introduce surface_prepare_texture().
Similar to surface_prepare_system_memory(). In the long term we'll probably
want to move the whole location management to resource.c and unify buffers and
textures there.
2010-02-04 13:39:26 +01:00
Henri Verbeet b0583a2410 wined3d: Never acquire a context in IWineD3DSurfaceImpl_BindTexture().
The caller is already responsible for doing this, so it's redundant at best.
2010-02-04 13:39:26 +01:00