Commit Graph

6474 Commits

Author SHA1 Message Date
Ken Thomases 4c4552c5a1 wined3d: Restore the pixel format of the window whose pixel format was actually changed. 2014-02-22 08:41:55 -06:00
Ken Thomases b8569d2f30 wined3d: Make context_update_window() just mark the GL context as needing to be set rather than setting it. 2014-02-22 08:41:51 -06:00
Ken Thomases baa85a097a wined3d: Use a separate flag to track if the GL context needs to be made current.
The new needs_set flag can be cleared after it's been heeded whereas restore_ctx
must not be cleared until the context has been released back to level 0.
2014-02-22 08:41:47 -06:00
Ken Thomases 2d1e67ee68 wined3d: Remove redundant call to context_set_pixel_format() from context_update_window().
It calls context_set_gl_context() just after and that starts with a call to
context_set_pixel_format().  Also, context_update_window() didn't do the
right thing (fall back to swapchain backup DC) if context_set_pixel_format()
fails.
2014-02-22 08:41:42 -06:00
Ken Thomases 088dd7289c wined3d: Call context_enter() before context_update_window() so it records the proper restore state. 2014-02-22 08:41:38 -06:00
Martin Storsjo 1275525789 wined3d: Use an rbtree for storing shaders for texture format conversion/blitting. 2014-02-17 20:16:30 +01:00
Martin Storsjo 171529106b wined3d: Add support for NV12 textures. 2014-02-17 20:16:29 +01:00
Stefan Dösinger 2728e7b887 wined3d: Reject height scaled repacked np2 textures. 2014-02-12 19:15:32 +01:00
Stefan Dösinger 6583379077 wined3d: Don't use NP2 repacking for RECT textures. 2014-02-12 19:15:31 +01:00
Martin Storsjo fd21351947 wined3d: Fix the YV12 illustration. 2014-02-12 19:15:30 +01:00
Erich E. Hoover 68e3b18533 ddraw: Return the D3D identifier when GetDeviceIdentifier is called with no flags. 2014-02-11 20:22:30 +01:00
Martin Storsjo 963c26b36f wined3d: Fix clamping in reading rectangular YV12 textures.
The lower bound for chroma components is size.y + 1/2, not
size.y - 1/2.
2014-02-11 19:20:08 +01:00
Frédéric Delanoy 0f2bed51bd Assorted spelling fixes. 2014-02-10 15:47:29 +01:00
Ken Thomases 59226e36b7 wined3d: Don't clear the GL context if it's not the one being destroyed by context_destroy_gl_resources().
The previous code clears the GL context if the context being destroyed is
not valid, even though the current one is some arbitrary, unrelated context.
2014-02-06 17:08:09 +01:00
Ken Thomases 75d53c9aed wined3d: Don't clear the GL context such that it can't be restored. 2014-02-06 17:08:08 +01:00
Henri Verbeet 82b38139eb wined3d: Also destroy the logo and cursor textures in wined3d_device_reset() when resetting state. 2014-01-30 17:48:35 +01:00
Henri Verbeet 175c63773d wined3d: Don't allow format conversion on Present() for d3d8.
Note that this isn't currently enforced by wined3d_swapchain_create() or
wined3d_device_reset() though.
2014-01-29 20:25:52 +01:00
Ken Thomases d2c56a6027 wined3d: Improve CheckDeviceType() support for windowed mode.
For windowed mode:
* It doesn't matter if there are no adapter modes for the display format.
* A backbuffer format is valid so long as there's support for color conversion
 to the display format.
* A backbuffer format of D3DFMT_UNKNOWN is allowed and means that it should be
 the same as the display format.
2014-01-28 19:38:47 +01:00
Stefan Dösinger 9f72f78431 wined3d: Set buffer->map_ptr to NULL on unmap. 2014-01-27 17:39:47 +01:00
Stefan Dösinger d640018a3c wined3d: Only set SFLAG_DYNLOCK when map_binding = sysmem.
All other map bindings are never freed. Setting SFLAG_DYNLOCK if
map_binding != sysmem might only keep a heap memory allocation around
(e.g. after device_reset) that is never used.
2014-01-17 18:10:18 +01:00
Stefan Dösinger 5630cb5dc8 wined3d: Don't set SFLAG_DYNLOCK at surface creation.
We no longer depend on SFLAG_DYNLOCK to create buffers and PIN_SYSMEM
makes sure the address remains constant.
2014-01-17 18:10:13 +01: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 00923cb50c wined3d: Remove surface_ops->map. 2014-01-17 18:10:05 +01:00
Stefan Dösinger f1ac04f2a6 wined3d: Add a missing break. 2014-01-17 16:22:51 +01:00
Stefan Dösinger 65bc678fcc wined3d: Prevent blits to surfaces that will be converted. 2014-01-16 21:04:19 +01:00
Stefan Dösinger 09dbba00d0 wined3d: Remove surface_init_sysmem. 2014-01-16 21:04:19 +01:00
Stefan Dösinger 10a8b2cd7f wined3d: Remove resource->allocatedMemory. 2014-01-16 21:04:19 +01:00
Stefan Dösinger abb620ed2e wined3d: Sysmem can be freed when user memory is used. 2014-01-16 21:04:19 +01:00
Stefan Dösinger 2b8e900ac4 wined3d: Give buffers their own location. 2014-01-15 20:03:53 +01:00
Stefan Dösinger 321cd8e825 wined3d: Decide about PBO use at surface creation time. 2014-01-15 20:03:47 +01:00
Stefan Dösinger 7c052171d6 wined3d: Remove SFLAG_PBO. 2014-01-15 20:03:35 +01:00
Stefan Dösinger 035012d5aa wined3d: Load textures from dib without copying to sysmem first. 2014-01-15 20:03:33 +01:00
Stefan Dösinger 42927d0e9d wined3d: Add INDIB and INUSERMEM to resource_access_from_location. 2014-01-15 20:03:31 +01:00
Stefan Dösinger d0823eb4f0 wined3d: Re-enable mapping into the DIB. 2014-01-14 20:18:25 +01:00
Stefan Dösinger 9665884766 wined3d: Don't map the surface in getdc.
This avoids bouncing the content between the map binding and DIB.
2014-01-14 20:18:25 +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
Jonathan Liu 91c5cf33ad wined3d: Avoid wined3d_ftoa buffer overflow. 2014-01-14 12:31:37 +01:00
Stefan Dösinger 4ca8f7104f wined3d: Move map binding loading to wined3d_surface_map. 2014-01-13 18:41:42 +01:00
Stefan Dösinger e2c0bc63cb wined3d: Start to split up surface_prepare_system_memory. 2014-01-13 18:41:15 +01:00
Stefan Dösinger 676a7f2140 wined3d: Make the callers of load_location responsible for allocating sysmem. 2014-01-13 18:41:09 +01:00
Stefan Dösinger 28bfc20589 wined3d: Use the map binding to optimize sysmem->sysmem blits. 2014-01-13 18:41:03 +01:00
Stefan Dösinger 965d00f4b6 wined3d: Give user memory its own location. 2014-01-10 17:59:16 +01:00
Stefan Dösinger badf3d8db7 wined3d: Load surfaces into map binding memory on unload.
A surface can stay in DIB or user memory just fine. When buffers get
their own location an exception for them has to be added.
2014-01-10 17:56:48 +01:00
Stefan Dösinger 18bf8b49b3 wined3d: Move location flag updating out of surface_init_sysmem. 2014-01-10 17:56:43 +01:00
Stefan Dösinger c770d3f573 wined3d: Mark the map binding up to date in texture2d_sub_resource_add_dirty_region. 2014-01-10 17:56:41 +01:00
Stefan Dösinger 1b561e815e wined3d: Use the map binding for RGB<->sRGB loads. 2014-01-10 17:56:39 +01:00
Stefan Dösinger 5c1df19b16 wined3d: Use the map binding to reload surfaces on color key changes. 2014-01-10 17:56:30 +01:00
Stefan Dösinger 5479ccea20 wined3d: Use the map binding to reload surfaces on palette changes. 2014-01-10 17:56:27 +01:00
Stefan Dösinger 1046551c34 wined3d: Add a map_binding field to surfaces.
Buffers, heap memory, user memory and DIBs will have their own
locations. This field specifies which location is used when the surface
is mapped.
2014-01-10 17:56:24 +01:00
Henri Verbeet 5dd286d05a wined3d: Make rebind_fbo in struct wined3d_context a bitfield. 2014-01-10 12:06:13 +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 06d6bdae4a wined3d: Place the logo texture in the default pool. 2014-01-10 12:06:04 +01:00
Henri Verbeet f8e62bc596 wined3d: Place the cursor texture in the default pool. 2014-01-10 12:05:57 +01:00
Frédéric Delanoy 91f2435469 Assorted spelling fixes. 2014-01-09 17:39:59 +01:00
Stefan Dösinger bffd536213 wined3d: GL_NV_vertex_program2_option supports relative offsets > 63.
The ARR codepath used if ctx->target_version >= NV2 does not account for
the correction offset, but the indirect addressing reads do, which
ultimately results in incorrect offsets. Since the limitation goes away
as soon as we enable GL_NV_vertex_program_2_option ignoring the offset
is the best thing to do. I don't set shader_data->rel_offset to zero in
the pre-compilation analysis because enablding NV_vertex_program2 is in
theory a decision that is taken later during code generation.
2014-01-09 17:39:55 +01:00
Stefan Dösinger 441d8ffeb2 wined3d: Mark the system location up to date in the DIB recreation codepath. 2014-01-09 17:39:54 +01:00
Stefan Dösinger db6d3c500c wined3d: Remove SFLAG_USERPTR. 2014-01-09 17:39:53 +01:00
Henri Verbeet 4710c4b51a wined3d: Store color keys in textures instead of in surfaces. 2014-01-09 15:50:39 +01:00
Henri Verbeet d412eb568e wined3d: Introduce a common GLSL handler for scalar instructions. 2014-01-09 15:50:30 +01:00
Henri Verbeet 4d93adf75e wined3d: Reset the command stream state as well in wined3d_device_reset(). 2014-01-09 15:50:25 +01:00
Stefan Dösinger b91973daa7 wined3d: Merge wined3d_surface_set_mem into wined3d_surface_update_desc . 2014-01-08 20:02:22 +01:00
Stefan Dösinger 82666af87a wined3d: Simplify wined3d_surface_set_mem. 2014-01-08 19:58:56 +01:00
Stefan Dösinger 70eab9d025 wined3d: Support custom pitches in wined3d_surface_update_desc. 2014-01-08 17:35:08 +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 2401a82bdc wined3d: Get rid of the unused screen_palents field in struct wined3d_palette. 2014-01-08 14:34:12 +01:00
Alexandre Julliard 5e7416e5c8 makefiles: Get rid of the MAKE_DLL_RULES variable. 2014-01-02 12:08:18 +01:00
Stefan Dösinger 1e9fe22f4c wined3d: Fix an msvc warning. 2014-01-01 20:45:25 +01:00
Stefan Dösinger fb75292875 wined3d: Don't store user memory in allocatedMemory. 2013-12-13 16:55:30 +01:00
Stefan Dösinger a1762ba8a4 wined3d: Don't check for render target usage in wined3d_surface_set_mem.
Ddraw and d3d9 already take care of this.
2013-12-13 16:55:28 +01:00
Henri Verbeet 4e7b62a46d wined3d: Get rid of unused palette flags. 2013-12-13 12:36:11 +01:00
Henri Verbeet f27bb660b3 wined3d: Explicitly pass the palette size to wined3d_palette_create(). 2013-12-13 12:36:11 +01:00
Henri Verbeet 89dedf6408 ddraw: Just set the palette caps in ddraw7_GetCaps(). 2013-12-13 12:36:11 +01:00
Frédéric Delanoy cc6f9c36cd wined3d: Use BOOL type where appropriate. 2013-12-12 19:21:36 +01:00
Henri Verbeet bf7f80f4b3 ddraw: Store the palette flags in the ddraw palette. 2013-12-12 12:08:23 +01:00
Henri Verbeet 1f0bb534ec ddraw: Keep a reference to the palette in the surface. 2013-12-12 12:08:16 +01:00
Henri Verbeet 27dc41d0dc wined3d: Fix the source swizzle for WINED3DSIH_LOG and WINED3DSIH_LOGP. 2013-12-12 12:08:09 +01:00
Stefan Dösinger 78fda5cea0 wined3d: Rename surface_load_pbo to surface_create_pbo. 2013-12-11 18:17:02 +01:00
Stefan Dösinger 4de7249d23 wined3d: Call buffer_get_memory in surface_load_pbo. 2013-12-11 18:17:01 +01:00
Stefan Dösinger 800571c015 wined3d: Use surface_get_memory in surface_download_data. 2013-12-11 18:17:01 +01:00
Stefan Dösinger 9b67b1b8a1 wined3d: Support getdc with user memory. 2013-12-11 18:17:00 +01:00
Henri Verbeet c8852c3ee3 wined3d: Fix the source swizzle for WINED3DSIH_EXPP. 2013-12-11 15:15:01 +01:00
Henri Verbeet 6e9acca1f4 wined3d: Fix the source swizzle for WINED3DSIH_EXP. 2013-12-11 15:14:58 +01:00
Henri Verbeet 544e52bff4 wined3d: Recreate DIB sections in wined3d_surface_update_desc().
Since commit 6bc69c271b, the GDI implementation
assumes DIB sections always exist.
2013-12-11 15:14:49 +01:00
Henri Verbeet 38495706b7 wined3d: Remove the render target check in x11_copy_to_screen(). 2013-12-11 15:14:38 +01:00
Nikolay Bogoychev 34ad4c7014 wined3d: Recognize GeForce GTX 765M. 2013-12-06 16:46:33 +01:00
Nikolay Bogoychev 48de52e2e0 wined3d: Recognize Haswell mobile graphics 4600. 2013-12-06 16:46:27 +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
Henri Verbeet 36dbac6cb8 wined3d: Set the volume container in volume_init(). 2013-12-06 13:14:52 +01:00
Henri Verbeet 5db26f7b45 wined3d: Pass a wined3d_resource_desc structure to volume_init(). 2013-12-06 13:14:52 +01:00
Henri Verbeet 15c1a26b55 wined3d: Create volumes inside wined3d. 2013-12-06 13:14:52 +01:00
Henri Verbeet da3549315f wined3d: Get rid of the buffer_object_size field from struct wined3d_buffer. 2013-12-06 13:14:52 +01:00
Henri Verbeet 7524258aaf ddraw: Implement flips inside ddraw. 2013-12-05 12:40:56 +01:00
Frédéric Delanoy 5ba7f79bad Assorted spelling fixes. 2013-12-03 19:41:53 +01:00
Stefan Dösinger 60ecf707a7 wined3d: Remove a useless comment. 2013-12-02 17:16:45 +01:00
Stefan Dösinger 6f865d3ea5 wined3d: Don't pass the pitch to read_from_framebuffer. 2013-12-02 17:16:43 +01:00
Stefan Dösinger e8c774e486 wined3d: Remove redundant state restoration from read_from_framebuffer. 2013-12-02 17:16:38 +01:00
Stefan Dösinger 6907faf805 wined3d: Use surface_get_memory in read_from_framebuffer. 2013-12-02 17:16:34 +01:00
Stefan Dösinger ae3788dcba wined3d: Add a function to retrieve surface data. 2013-12-02 17:16:28 +01:00
Henri Verbeet 7052c87358 wined3d: Properly check for the front buffer in d3dfmt_get_conv(). 2013-12-02 12:12:43 +01:00
Stefan Dösinger 6d0d018bfa wined3d: Don't store PBO pointers in allocatedMemory. 2013-11-27 17:14:32 +01:00
Henri Verbeet 4b3db52b53 wined3d: Merge the texture creation functions. 2013-11-27 11:30:15 +01:00
Stefan Dösinger eb446e8640 wined3d: Use the pointer returned by map in wined3d_surface_getdc. 2013-11-26 17:15:25 +01:00
Stefan Dösinger 038e45c662 wined3d: Don't set SFLAG_INSYSMEM in surface_download_data.
surface_load_location takes care of this.
2013-11-26 17:15:21 +01:00
Stefan Dösinger 1a55000df1 wined3d: Discard non-sysmem locations in unload. 2013-11-26 17:15:14 +01:00
Henri Verbeet 4122cd8083 wined3d: Get rid of surface_set_dirty(). 2013-11-25 15:15:54 +01:00
Henri Verbeet 71b982d040 wined3d: Just use surface_invalidate_location() in surface_map(). 2013-11-25 15:15:54 +01:00
Henri Verbeet 82c1d01364 wined3d: Just validate the sysmem location in surface_init().
This is all surface_set_dirty() really does here.
2013-11-25 15:15:54 +01:00
Henri Verbeet caf9ad6c2c wined3d: Swap the container's texture name in flip_surface(). 2013-11-22 16:41:35 +01:00
Henri Verbeet f6b5dc246a wined3d: Get rid of the WINED3DSRGB enum. 2013-11-22 11:37:29 +01:00
Henri Verbeet 7427b72250 wined3d: Get rid of surface_internal_preload(). 2013-11-22 11:37:24 +01:00
Henri Verbeet e0beab8b81 wined3d: Merge texture2d_preload() and texture3d_preload() into wined3d_texture_load(). 2013-11-22 11:37:20 +01:00
Henri Verbeet c025b5d06b wined3d: surface_load() should never fail. 2013-11-22 11:37:07 +01:00
Henri Verbeet 12f16f2127 wined3d: Reimplement wined3d_ftoa().
The current implementation is not precise enough when the FPU is in REAL4
mode, which also happens to be the mode d3d9 sets by default. Doing the same
thing with integer math is a huge pain, so just replace the decimal separator
instead.
2013-11-22 11:37:02 +01:00
Frédéric Delanoy 57d7f74d34 Assorted spelling fixes. 2013-11-21 19:44:46 +01:00
Stefan Dösinger 6bc69c271b wined3d: Don't create a DIB section in gdi_surface_map. 2013-11-21 19:39:02 +01:00
Henri Verbeet 0d7b12696d wined3d: Merge texture2d_unload() and texture3d_unload(). 2013-11-21 13:36:37 +01:00
Henri Verbeet f91eab6d3e wined3d: Merge surface_bind_and_dirtify() and volume_bind_and_dirtify() into wined3d_texture_bind_and_dirtify(). 2013-11-21 13:36:35 +01:00
Henri Verbeet 2e63e8f9cc wined3d: Get rid of surface_bind(). 2013-11-21 13:36:33 +01:00
Henri Verbeet 2ca86bcab6 wined3d: Return early in wined3d_texture_bind() if the GL texture already has a name. 2013-11-21 13:36:31 +01:00
Henri Verbeet 6b90248aec wined3d: Merge texture2d_bind() and texture3d_bind() into wined3d_texture_bind(). 2013-11-21 13:36:29 +01:00
Stefan Dösinger 0ff0a6e9bc wined3d: Remove surface->dirtyRect. 2013-11-20 16:54:39 +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
Stefan Dösinger 5d4233378d wined3d: Remove broken ddraw overlay support. 2013-11-20 16:54:39 +01:00
Henri Verbeet 7e72985358 wined3d: wined3d_texture_bind() should never fail. 2013-11-20 11:28:23 +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 e64b19387b wined3d: Surfaces always have a container in arbfp_blit_set(). 2013-11-20 11:28:20 +01:00
Henri Verbeet ad6a194aa0 wined3d: Surfaces always have a container in ffp_blit_set(). 2013-11-20 11:28:18 +01:00
Henri Verbeet 51f05a1f14 wined3d: Surfaces always have a container in surface_invalidate_location(). 2013-11-20 11:28:16 +01:00
Francois Gouget dc22a57042 wined3d: Make wined3d_device_create_cursor_texture() static. 2013-11-20 11:28:13 +01:00
Henri Verbeet 0fba32f139 wined3d: Surfaces always have a container in surface_modify_ds_location(). 2013-11-19 11:09:00 +01:00
Henri Verbeet f020251d2b wined3d: Surfaces always have a container in fb_copy_to_texture_direct(). 2013-11-19 11:08:58 +01:00
Henri Verbeet 2d262b3c97 wined3d: Surfaces always have a container in surface_prepare_texture(). 2013-11-19 11:08:56 +01:00
Henri Verbeet 57292f9498 wined3d: Surfaces always have a container in surface_internal_preload(). 2013-11-19 11:08:54 +01:00
Henri Verbeet aa48321ccd wined3d: Surfaces always have a container in surface_add_dirty_rect(). 2013-11-19 11:08:52 +01:00
Henri Verbeet 743900faaa wined3d: Surfaces always have a container in surface_unload(). 2013-11-18 11:20:54 +01:00
Henri Verbeet 32fb4e45eb wined3d: Surfaces always have a container in surface_bind(). 2013-11-18 11:20:51 +01:00
Henri Verbeet 96fbf9fed3 wined3d: Surfaces always have a container in draw_textured_quad(). 2013-11-18 11:20:49 +01:00
Henri Verbeet 941fe99eaf wined3d: Avoid calling wined3d_surface_set_mem() in surface_cleanup().
Calling wined3d_surface_set_mem() might cause the surface container to be
accessed, for example when invalidating resource locations. This would become
a problem once we assume surfaces always have a container, and is pointless
anyway because the surface is being destroyed.
2013-11-18 11:20:42 +01:00
Henri Verbeet 505951e32d wined3d: Create a proper texture for the software cursor. 2013-11-18 11:20:40 +01:00
Henri Verbeet 42f6ca821c wined3d: Set the surface container in surface_init(). 2013-11-15 12:00:32 +01:00
Henri Verbeet bb00811d60 wined3d: Pass a wined3d_resource_desc structure to surface_init(). 2013-11-15 12:00:30 +01:00
Henri Verbeet afc3d2ab70 wined3d: Create surfaces inside wined3d. 2013-11-15 12:00:26 +01:00
Henri Verbeet 94509fbd59 wined3d: Create a texture for the logo surface. 2013-11-14 16:21:02 +01:00
Henri Verbeet c3da4ce088 wined3d: Don't map the destination surface read-only in surface_convert_format(). 2013-11-13 11:27:42 +01:00
Henri Verbeet 7c928b6c5c wined3d: Create textures for converted surfaces. 2013-11-13 11:27:39 +01:00
Rico Schüller fb926490fe wined3d: Use GL_EXT_texture_mirror_clamp when available. 2013-11-07 19:00:50 +01:00
Rico Schüller de9e1cdcae wined3d: Use GL_ARB_texture_mirror_clamp_to_edge when available. 2013-11-06 18:00:55 +01:00