Henri Verbeet
3082c1a9de
wined3d: Get rid of the WINED3DRENDERSTATETYPE typedef.
2011-12-20 10:11:47 +01:00
Henri Verbeet
943fcb0fc4
wined3d: Use the correct source pitch and byte_count for uploading converted surfaces.
2011-12-13 18:58:57 +01:00
Henri Verbeet
e6fb4537f0
ddraw: Move clipper handling to ddraw.
2011-12-13 18:58:37 +01:00
Henri Verbeet
f3afa69f8d
wined3d: Introduce a helper function for checking colors against a color key.
2011-12-09 21:15:24 +01:00
Henri Verbeet
3dd03f642d
wined3d: Get rid of the WINEDDCOLORKEY typedef.
2011-12-08 10:27:53 +01:00
Henri Verbeet
2d1a941b7d
wined3d: Properly check if a surface has a DIB section in gdi_surface_map().
2011-12-08 10:27:32 +01:00
Henri Verbeet
56e3e05e57
wined3d: Read the PBO back into the DIB section if we have one in surface_remove_pbo().
2011-12-08 10:27:29 +01:00
Henri Verbeet
5c5216e609
wined3d: Get rid of the WINED3DBOX typedef.
2011-12-07 17:49:56 +01:00
Henri Verbeet
eafebc0491
wined3d: Get rid of the WINED3DLOCKED_RECT typedef.
2011-12-06 15:50:58 +01:00
Henri Verbeet
94c9b0b4fc
wined3d: Get rid of the WINED3DPRESENT_PARAMETERS typedef.
2011-12-02 11:51:29 +01:00
Henri Verbeet
94c0da184e
wined3d: Create a PBO in surface_load_location() even if SFLAG_INSYSMEM is already set.
...
In the longer term, sysmem and pbo should be separate resource locations.
2011-12-01 10:06:12 +01:00
Henri Verbeet
39ebb992f7
wined3d: Introduce a separate function to determine if a surface needs a PBO.
2011-12-01 10:06:07 +01:00
Henri Verbeet
4a7cbba0ea
wined3d: Move the surface map counting code to wined3d_surface_map().
2011-12-01 10:06:02 +01:00
Henri Verbeet
3a2921c559
ddraw: Keep the primary surface mapped at the same address for early ddraw versions.
2011-11-30 11:50:58 +01:00
Henri Verbeet
3430e11605
wined3d: Add a flags parameter to wined3d_surface_create().
2011-11-30 11:50:48 +01:00
Henri Verbeet
24775459c8
wined3d: Don't apply fixups to converted surfaces.
2011-11-25 16:21:56 +01:00
Henri Verbeet
7459180a51
wined3d: Get rid of the WINED3DCOLORVALUE typedef.
2011-11-16 09:41:50 +01:00
Henri Verbeet
0ba5f7dd98
wined3d: Get rid of RTL_DISABLE.
2011-11-09 11:34:11 +01:00
Henri Verbeet
b6c7a3dbc8
wined3d: Don't print FIXMEs for misaligned surface maps.
2011-11-09 11:34:04 +01:00
Henri Verbeet
d6b432b068
wined3d: Get rid of client_memory from wineD3DSurface_DIB.
2011-11-08 09:50:23 +01:00
Henri Verbeet
896aaa67ca
wined3d: Get rid of holdbitmap from wineD3DSurface_DIB.
2011-11-08 09:50:18 +01:00
Henri Verbeet
604d154002
wined3d: Only report a broken pitch in wined3d_surface_map().
...
We'd like the correct pitch for internal calls to wined3d_surface_get_pitch().
2011-11-08 09:50:13 +01:00
Stefan Dösinger
7eefed1410
wined3d: YUY2 and UYVY are block based.
2011-11-07 14:32:16 +01:00
Stefan Dösinger
7fd752047d
d3d9/tests: Test partial block locks.
2011-11-07 14:27:24 +01:00
Henri Verbeet
a64271c07e
wined3d: Make the surface parameter to blit_shader.set_shader() const.
2011-11-07 11:32:47 +01:00
Henri Verbeet
35515e4669
wined3d: Remove surface_draw_overlay from wined3d_surface_ops.
2011-11-07 11:32:34 +01:00
Henri Verbeet
48b6050ca3
wined3d: Remove surface_preload from wined3d_surface_ops.
2011-11-07 11:32:28 +01:00
Henri Verbeet
3f11631e75
wined3d: Merge surface_getdc() and gdi_surface_getdc().
2011-11-04 10:44:32 +01:00
Henri Verbeet
3bfecd58d2
wined3d: Avoid a drawable -> texture transfer through sysmem in arbfp_blit_surface() with backbuffer ORM.
2011-11-04 10:44:14 +01:00
Stefan Dösinger
9b0adb406d
wined3d: Locking partial blocks is not allowed in DEFAULT pool resources.
2011-11-03 13:52:15 +01:00
Henri Verbeet
335a6ca78e
wined3d: Use wined3d_surface_blt() in swapchain_gl_present().
2011-11-03 13:00:50 +01:00
Henri Verbeet
c30ea3767c
wined3d: Use wined3d_surface_blt() in surface_upload_from_surface().
2011-11-03 13:00:40 +01:00
Henri Verbeet
fcf96b634a
wined3d: Create the DIB section for DDSCAPS_OWNDC surfaces on initialization.
2011-10-31 23:52:51 +01:00
Henri Verbeet
7de4df9fd9
wined3d: Get rid of the wined3d_surface_bltfast() export.
2011-10-31 23:52:47 +01:00
Henri Verbeet
bf5ab0a199
wined3d: Make the device parameter to surface_blt_to_drawable() const.
2011-10-27 19:34:19 +02:00
Henri Verbeet
61550ff1de
wined3d: Use the correct pitch in surface_upload_data().
...
This fixes a regression introduced by commit
2da4f87a7e
.
2011-10-27 19:34:00 +02:00
Henri Verbeet
22d2d26ffc
wined3d: Make the device parameter to surface_blt_fbo() const.
2011-10-27 12:25:29 +02:00
Henri Verbeet
54dc38718b
wined3d: Make the device parameter to wined3d_surface_depth_blt_fbo() const.
2011-10-27 12:25:24 +02:00
Henri Verbeet
6a981239db
wined3d: Get rid of the unused palette9 wined3d_surface field.
2011-10-27 12:25:19 +02:00
Henri Verbeet
a42774f042
wined3d: Only check for sRGB attachability when needed in surface_load_texture().
2011-10-26 12:41:33 +02:00
Henri Verbeet
2da4f87a7e
wined3d: Upload directly from the source surface in wined3d_surface_blt(), if possible.
...
This avoids either loading sysmem surfaces into video memory (wasting GPU
memory) and then doing a blit on the GPU, or downloading GPU surfaces to
sysmem, doing a blit on the CPU, and likely uploading it again. This mostly
matters for ddraw and d3d8 applications, d3d9 already has to go through
wined3d_device_update_surface() to transfer data from sysmem surfaces to GPU
surfaces.
2011-10-25 16:57:23 +02:00
Henri Verbeet
e6101816a2
wined3d: Get rid of surface_gdi_cleanup().
...
It's effectively the same as surface_cleanup(). The GL objects that
surface_cleanup() destroys are never created for "GDI" surfaces.
2011-10-24 11:16:40 +02:00
Henri Verbeet
6e8273177a
wined3d: Reject multisampled readbacks in wined3d_surface_get_render_target_data().
2011-10-24 11:16:33 +02:00
Henri Verbeet
4229d865d2
wined3d: Only try to load surfaces from the drawable if the drawable is current in surface_load_sysmem().
2011-10-24 11:16:27 +02:00
Henri Verbeet
82f067f5cd
wined3d: Allow loading multisampled surfaces into sysmem.
2011-10-20 11:02:57 +02:00
Henri Verbeet
3042860478
wined3d: Detach any attached overlays on surface cleanup.
...
Spotted by Dan Kegel / Valgrind.
2011-10-19 12:23:47 +02:00
Henri Verbeet
68e1484bec
wined3d: Mark default pool surfaces lost when they're unloaded.
2011-10-18 15:10:13 +02:00
Henri Verbeet
ca43c49968
wined3d: Keep surfaces in sysmem if they're both already there in wined3d_surface_blt().
...
The idea is to avoid bouncing surfaces between the CPU and GPU when doing both
locks and blits on a surface. This is mostly an issue for ddraw applications.
2011-10-18 15:10:06 +02:00
Stefan Dösinger
496b438ede
wined3d: Remove d3d8/9 palette support.
2011-10-11 13:37:49 +02:00
Henri Verbeet
5609f062d2
wined3d: Dump the WINEDDBLTFX structure in wined3d_surface_blt().
2011-09-20 16:21:38 +02:00
Henri Verbeet
b9fcf71c71
ddraw: Use real flips.
2011-09-16 17:23:08 +02:00
Henri Verbeet
8009a4947b
wined3d: Flush after surface updates.
...
This is similar to 5d1d07abcf
. We need to flush
to ensure resource updates are visible in other contexts, since otherwise GL
doesn't make any ordering guarantees between contexts.
2011-09-15 15:41:40 +02:00
Henri Verbeet
bbb77cba74
wined3d: Add support for flipping compressed surfaces to surface_cpu_blt().
2011-09-09 13:33:33 +02:00
Henri Verbeet
5c57b53a6c
wined3d: Use the CPU blitter for blitting to converted surfaces.
2011-09-09 13:33:25 +02:00
Henri Verbeet
e82e1c2ac5
wined3d: Disable sRGB decoding in draw_textured_quad().
...
We're always supposed to draw the RGB texture here. sRGB decoding may be
enabled if sRGB decoding was enabled to last time the surface was used as a
texture, or if it was never used as a texture at all.
2011-09-09 13:33:22 +02:00
Gerald Pfeifer
0affcc3a7d
wined3d: Remove dead code (and variable) from wined3d_surface_flip. wined3d_surface_flip.
2011-09-08 20:08:06 +02:00
Henri Verbeet
19da825b12
wined3d: Use draw_binding for the surface_modify_location() call in surface_unmap() as well.
2011-09-08 11:11:10 +02:00
Henri Verbeet
79c438b2f2
wined3d: Implement wined3d_surface_flip() as a blit.
...
This allows us to actually take the "override" parameter into account. Plain
back -> front flips will be detected in wined3d_surface_flip() and will still
be handled by wined3d_swapchain_present().
2011-09-07 11:12:17 +02:00
Henri Verbeet
1b9bc1a950
wined3d: Try doing a present in wined3d_surface_blt() instead of IWineD3DSurfaceImpl_BltOverride().
2011-09-06 10:48:36 +02:00
Henri Verbeet
b86d69de16
wined3d: Don't override the swapchain present interval in IWineD3DSurfaceImpl_BltOverride().
2011-09-06 10:48:31 +02:00
Henri Verbeet
3346fc747c
wined3d: Get rid of the rect checks for present in IWineD3DSurfaceImpl_BltOverride().
2011-09-05 10:56:54 +02:00
Henri Verbeet
ca69a23d52
wined3d: Get rid of some redundant else statements in IWineD3DSurfaceImpl_BltOverride().
2011-09-02 10:09:01 +02:00
Henri Verbeet
179d6f8087
wined3d: Remove a redundant compare in IWineD3DSurfaceImpl_BltOverride().
...
If the source surface isn't on the destination swapchain it can't be a
backbuffer there either.
2011-09-02 10:08:57 +02:00
Henri Verbeet
cc10600b52
wined3d: Print a FIXME for any flags passed to wined3d_surface_flip().
2011-09-02 10:08:53 +02:00
Henri Verbeet
55ce85ad29
wined3d: Merge the wined3d_surface_flip() implementations.
2011-09-01 18:06:36 +02:00
Henri Verbeet
b587b85394
wined3d: Merge the wined3d_surface_set_mem() implementations.
2011-09-01 18:06:36 +02:00
Austin English
b2f7461a4d
wined3d: Remove an unused variable.
2011-09-01 18:06:36 +02:00
Henri Verbeet
dd462052c6
wined3d: Use the resource size for copying between a surface's DIB and PBO.
2011-08-31 12:07:57 +02:00
Matteo Bruni
0386b44bad
wined3d: Keep track of the current texture type for each texture unit.
2011-08-29 12:08:19 +02:00
Henri Verbeet
641f52ef96
wined3d: Add multisampling support.
2011-08-26 11:28:47 +02:00
Henri Verbeet
3b478afd10
wined3d: Get rid of the location fixup in surface_blt_fbo().
2011-08-26 11:27:50 +02:00
Henri Verbeet
eac640532d
wined3d: Get rid of the location fixup for ORM_FBO in surface_modify_location().
2011-08-26 11:27:46 +02:00
Henri Verbeet
68a5305dfd
wined3d: Get rid of the location fixup for ORM_FBO in surface_load_location().
2011-08-26 11:27:43 +02:00
Matteo Bruni
d485e04576
wined3d: Fetch currently active texture unit from the wined3d_context.
2011-08-25 11:31:55 +02:00
Matteo Bruni
f47f9f7c74
wined3d: Store currently active texture in the wined3d context.
2011-08-25 11:31:55 +02:00
Matteo Bruni
e53ae83d74
wined3d: Pass around the context instead of gl_info.
2011-08-25 11:31:55 +02:00
Matteo Bruni
be8ea9c36e
wined3d: Make context_acquire() unconditional in a bunch of places.
2011-08-25 11:31:55 +02:00
Henri Verbeet
6cdfb95c8e
wined3d: Use draw_binding in surface_unload().
2011-08-25 11:31:53 +02:00
Henri Verbeet
1d43f07239
wined3d: Use draw_binding in surface_realize_palette().
2011-08-25 11:31:53 +02:00
Henri Verbeet
683b52ed92
wined3d: Use draw_binding in surface_unmap().
2011-08-25 11:31:53 +02:00
Henri Verbeet
1ae498dc59
wined3d: Use draw_binding in IWineD3DSurfaceImpl_BltOverride().
2011-08-25 11:31:53 +02:00
Henri Verbeet
4673330cf4
wined3d: Use draw_binding in wined3d_surface_blt().
2011-08-24 11:58:15 +02:00
Henri Verbeet
e57b20c215
wined3d: Keep track of a surface's "draw location".
2011-08-24 11:58:14 +02:00
Henri Verbeet
f73593c572
wined3d: Set the current location to SFLAG_INTEXTURE instead of SFLAG_INDRAWABLE in wined3d_surface_depth_blt().
...
These currently end up being the same thing, but that will change soon.
2011-08-24 11:58:14 +02:00
Henri Verbeet
4b1ba0e02d
wined3d: Don't get rid of the user memory unless we're actually called with NULL in surface_set_mem().
...
In particular, some applications will call surface_set_mem() with the same
pointer to notify us the contents have changed.
2011-08-24 11:58:14 +02:00
Henri Verbeet
48911d7a1c
wined3d: Reject color blits on sysmem surfaces in ffp_blit_supported().
2011-08-23 16:53:51 +02:00
Henri Verbeet
f58e55ec6c
wined3d: Move arbfp based color blits from IWineD3DSurfaceImpl_BltOverride() to wined3d_surface_blt().
2011-08-23 16:53:51 +02:00
Henri Verbeet
a04f0e9c78
wined3d: Move FBO based color blits from IWineD3DSurfaceImpl_BltOverride() to wined3d_surface_blt().
2011-08-22 16:14:37 +02:00
Henri Verbeet
d063ff55e7
wined3d: Move surface_color_fill() based color fills from IWineD3DSurfaceImpl_BltOverride() to wined3d_surface_blt().
2011-08-22 16:14:37 +02:00
Henri Verbeet
a887128ffd
wined3d: Reject color fills on sysmem surfaces in ffp_blit_supported().
2011-08-22 16:14:36 +02:00
Henri Verbeet
18434ddc57
wined3d: Directly call surface_cpu_blt() in cpu_blit_color_fill().
...
And avoid a potential infinite recursion if wined3d_surface_blt() ends up
calling cpu_blit_color_fill().
2011-08-22 16:14:36 +02:00
Henri Verbeet
26484c9200
wined3d: Allow color fills on FBO attachable surfaces in ffp_blit_supported().
2011-08-22 16:14:36 +02:00
Henri Verbeet
e1ab5f6e6b
wined3d: Don't allow blits with an invalid destination rectangle when a clipper is set either.
...
Clippers don't really work. Previously we mostly didn't run into this because
the rectangle was already rejected by ddraw_surface7_Blt(), although
ddraw_surface7_BltFast() might have been affected in a couple of cases. We
should of course implement clippers, but until that happens, completely
rejecting the blit is better than introducing memory corruption.
This fixes a regression introduced by commit
92e616f355
.
2011-08-22 16:14:36 +02:00
Henri Verbeet
56428c6386
wined3d: Reuse convert_a8r8g8b8_x8r8g8b8() for B8G8R8X8 -> B8G8R8A8 conversions.
2011-08-22 16:14:36 +02:00
Henri Verbeet
156d24c634
wined3d: Add compressed surface support to surface_cpu_blt().
2011-08-22 16:14:36 +02:00
Henri Verbeet
a84275075d
wined3d: Implement wined3d_surface_bltfast() on top of wined3d_surface_blt().
2011-08-05 09:17:39 +02:00
Henri Verbeet
662de19ad3
wined3d: Move some flags handling from surface_cpu_blt() to wined3d_surface_blt().
2011-08-04 09:04:49 +02:00
Henri Verbeet
7e3ecd683c
wined3d: Move rectangle validation from surface_cpu_blt() to wined3d_surface_blt().
...
This fixes some tests because these were getting skipped for the BltOverride() path.
2011-08-04 09:04:39 +02:00
Henri Verbeet
b166cb29f8
wined3d: Remove src_rect and dst_rect NULL checks from surface_cpu_blt().
2011-08-04 09:04:25 +02:00
Henri Verbeet
e74d1358ac
wined3d: Remove the unused blit_op parameter to arbfp_blit_surface().
2011-08-04 09:04:20 +02:00
Henri Verbeet
41cff1618c
wined3d: Merge wined3d_surface_blt(), surface_blt() and gdi_surface_blt().
2011-08-03 09:23:30 +02:00
Henri Verbeet
c12627562b
wined3d: Go to the fallbacks for cross-swapchain blits.
2011-08-03 09:23:20 +02:00
Henri Verbeet
111e8fe77c
wined3d: Add WINED3DFMT_P8_UINT support to wined3d_format_convert_from_float().
2011-08-03 09:23:16 +02:00
Henri Verbeet
cf1c641cbb
wined3d: Fix switching color keying on / off.
2011-08-03 09:23:12 +02:00
Henri Verbeet
e4efcea223
wined3d: Set the read buffer to GL_NONE in surface_load_ds_location().
...
On GL implementations that don't support GL_ARB_ES2_compatibility the
framebuffer's read buffer has to be valid, even if we're not reading from it.
2011-08-03 09:23:08 +02:00
Henri Verbeet
98650e841e
wined3d: Go to the fallbacks if D3D is not initialized in surface_blt().
...
Even though this is the "OpenGL" surface implementation, this can still happen
in e.g. ddraw if no swapchain is created yet. That's something we should fix,
but not today.
2011-08-02 11:40:20 +02:00
Henri Verbeet
7539cc8faa
wined3d: Go straight to the fallbacks for complex blits in surface_blt().
...
At the moment this is only marginally useful, since it just avoids silly
things like color keyed depth fills that are probably invalid anyway. However,
the idea is to gradually move normal color fill and blit handling out of
IWineD3DSurfaceImpl_BltOverride() and surface_cpu_blt(), and eventually make
those functions go away completely.
2011-08-02 11:40:16 +02:00
Henri Verbeet
4bdd4ef45b
wined3d: Check for locked surfaces in wined3d_surface_blt().
2011-08-02 11:40:11 +02:00
Henri Verbeet
50d883c37e
wined3d: IWineD3DSurfaceImpl_BltOverride() is always passed valid source and destination rectangles.
...
So no need to call surface_get_rect() anymore.
2011-08-02 11:40:07 +02:00
Henri Verbeet
ace241ad59
wined3d: Resolve source and destination rectangles in wined3d_surface_blt().
2011-08-02 11:40:01 +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
dcc969c32c
wined3d: Get rid of dst_fbo.
...
As a result we can get rid of a couple of other things as well.
2011-08-01 11:16:08 +02:00
Henri Verbeet
ccb3a51a44
wined3d: Just invalidate STATE_FRAMEBUFFER in surface_load_ds_location().
2011-08-01 11:16:03 +02:00
Henri Verbeet
2bf020e26f
wined3d: Only invalidate state for the current context in surface_blt_fbo().
2011-07-28 11:29:14 +02:00
Henri Verbeet
51c0f2a787
wined3d: Only invalidate state for the current context in wined3d_surface_depth_blt_fbo().
2011-07-27 11:51:53 +02:00
Henri Verbeet
c5f8a33a86
wined3d: Make the surface parameter to ffp_blit_p8_upload_palette() const.
2011-07-19 14:05:59 +02:00
Henri Verbeet
437cec1a49
wined3d: Make the surface parameter to surface_depth_blt() const.
2011-07-18 16:23:29 +02:00
Henri Verbeet
a97ed53460
wined3d: Make the surface parameter to surface_convert_color_to_float() const.
2011-07-18 16:23:29 +02:00
Henri Verbeet
d314aa2d6e
wined3d: Make the surface parameter to surface_convert_depth_to_float() const.
2011-07-18 16:23:29 +02:00
Henri Verbeet
416a55c7aa
wined3d: Make the surface parameter to surface_is_full_rect() const.
2011-07-18 16:23:29 +02:00
Henri Verbeet
db12216301
wined3d: Make the surface parameter to surface_get_rect() const.
2011-07-18 16:23:29 +02:00
Henri Verbeet
abfd6b479a
wined3d: Make the surface parameter to d3dfmt_p8_init_palette() const.
2011-07-11 11:53:32 +02:00
Henri Verbeet
3e9930f307
wined3d: Make the device parameter to primary_render_target_is_p8() const.
2011-07-11 11:53:28 +02:00
Henri Verbeet
a26c5f9b13
wined3d: Make the surface parameter to d3dfmt_get_conv() const.
2011-07-08 11:25:31 +02:00
Henri Verbeet
aa55404682
wined3d: Make the src_surface parameter to draw_textured_quad() const.
2011-07-08 11:25:28 +02:00
Henri Verbeet
0d18f5df0e
wined3d: Make the surface parameter to surface_upload_data() const.
2011-07-08 11:25:25 +02:00
Henri Verbeet
faebcc0236
wined3d: Make the surface parameter to surface_translate_drawable_coords() const.
2011-07-08 11:25:21 +02:00
Henri Verbeet
bb4b86f365
wined3d: Make the rt parameter to surface_set_compatible_renderbuffer() const.
2011-07-08 11:25:17 +02:00
Henri Verbeet
640234c504
wined3d: Rename "flag" to "location" in surface_modify_location().
2011-07-07 12:31:46 +02:00
Henri Verbeet
3ccf12a77c
wined3d: Rename "flag" to "location" in surface_load_location().
...
This makes much more sense.
2011-07-06 11:14:20 +02:00
Stefan Dösinger
053071e343
wined3d: Pass a struct wined3d_fb_state to device_clear_render_targets.
2011-07-05 17:33:51 +02:00
Stefan Dösinger
cd96c59d91
wined3d: Track framebuffer changes.
2011-07-05 17:33:43 +02:00
Henri Verbeet
4e8c7f00f2
wined3d: Print an ERR for unknown / invalid surface locations in surface_load_location().
2011-07-05 13:46:24 +02:00
Henri Verbeet
1c3b691f10
wined3d: Introduce a separate function for loading the SFLAG_INTEXTURE and SFLAG_INSRGBTEX surface locations.
2011-07-05 13:46:20 +02:00
Henri Verbeet
cabcb362c1
wined3d: Introduce a separate function for loading the SFLAG_INDRAWABLE surface location.
2011-07-05 13:46:15 +02:00
Henri Verbeet
aacd8f8b93
wined3d: Introduce a separate function for loading the SFLAG_INSYSMEM surface location.
2011-07-05 13:46:11 +02:00
Henri Verbeet
b1664a2c85
wined3d: Get rid of some IWineD3D* references.
2011-07-04 13:44:41 +02:00
Henri Verbeet
c461d312ba
wined3d: Request per-surface palettes in the client libs.
2011-06-24 08:49:48 -05:00
Henri Verbeet
fd8dbf0847
wined3d: Make the surface parameter to surface_get_gl_buffer() const.
2011-06-24 08:49:34 -05:00
Henri Verbeet
0ce282edf7
wined3d: Make the surface parameter to surface_is_offscreen() const.
2011-06-24 08:49:28 -05:00
Henri Verbeet
acd8c58725
ddraw: Implement surface private data handling on top of wined3d_resource.
2011-06-22 11:25:27 +02:00
Henri Verbeet
469eba24c0
d3d9: Implement IDirect3DVertexBuffer9 private data handling on top of wined3d_resource.
2011-06-17 11:02:28 +02:00
Henri Verbeet
4621568922
wined3d: Only invert viewport y for onscreen destinations in surface_depth_blt().
...
This fixes a regression introduced by
032f8702ed
.
2011-06-16 11:16:31 +02:00
Henri Verbeet
8153674c4a
wined3d: Don't clear the alloc flags in wined3d_surface_set_format().
...
Changing the format is only allowed for surfaces with format
WINED3DFMT_UNKNOWN, in which case there can't be a GL texture allocated.
2011-06-15 20:04:38 +02:00
Henri Verbeet
b9133d7de0
wined3d: Implement wined3d_device_update_surface() on top of surface_upload_data().
2011-06-15 12:51:49 +02:00
Henri Verbeet
980c50a087
wined3d: Move PBO handling mostly out of surface_upload_data().
...
Currently we essentially get half of the address from the caller and half from
the destination surface. Since we'd like to use surface_upload_data() for
wined3d_device_update_surface() as well, we should get all of it from the
caller.
2011-06-10 10:44:39 +02:00
Henri Verbeet
a1b8f254b1
wined3d: Get rid of a NULL check for surface_upload_data().
2011-06-10 10:44:32 +02:00
Henri Verbeet
9f3e6a20e8
wined3d: Handle unpack row length inside surface_upload_data().
2011-06-10 10:44:26 +02:00
Henri Verbeet
01e668b007
wined3d: Use GL_DEPTH_COMPONENT as internal format for depth_blt_texture.
...
This also changes the texture level to always be zero while we're at it. In
practice depth/stencil textures should rarely have multiple levels, if ever,
but only 0 makes sense here.
2011-06-07 14:18:34 +02:00
Henri Verbeet
c8f26a1345
wined3d: Rename IWineD3DDeviceImpl_MarkStateDirty() to device_invalidate_state().
2011-06-06 16:18:41 +02:00
Henri Verbeet
aba42d1fa5
wined3d: Introduce a separate structure for framebuffer state.
2011-05-19 10:07:57 +02:00
Henri Verbeet
ef6c6f9ac9
wined3d: Get rid of the renderbuffer_entry_t typedef.
2011-05-17 10:06:30 +02:00
Henri Verbeet
0e0e5c3e38
wined3d: Get rid of the IWineD3DDevice typedefs.
2011-05-17 10:06:23 +02:00
Stefan Dösinger
a549b8f090
wined3d: Fix a few MSVC data loss warnings.
2011-05-13 17:05:27 +02:00
Stefan Dösinger
31901155ce
wined3d: Fix a unsigned unary minus warning in MSVC.
2011-05-13 17:05:27 +02:00
Henri Verbeet
00a5f38595
wined3d: Remove object creation methods from the IWineD3DDevice interface.
2011-05-11 14:56:48 +02:00
Henri Verbeet
e6ab3832b2
wined3d: Set SFLAG_DYNLOCK for lockable render targets.
2011-05-11 14:56:48 +02:00
Henri Verbeet
f9f83fc884
wined3d: Add some initial access checking for resources.
...
Just print a WARN in surface_load_location() for the moment. We currently
pretend all resources are managed, strictly enforcing pool restrictions would
just break a lot of things.
2011-05-06 14:23:46 +02:00
Henri Verbeet
0116af3703
wined3d: Cleanup surfaces only once.
2011-05-03 14:38:06 +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
Henri Verbeet
ab199f56a6
wined3d: Merge the IWineD3DSurface::Blt() implementations.
2011-04-29 16:52:13 +02:00
Henri Verbeet
29c95df7c3
wined3d: Merge the IWineD3DSurface::BltFast() implementations.
2011-04-29 16:52:12 +02:00
Henri Verbeet
0b523df93c
wined3d: Merge the IWineD3DSurface::Flip() implementations.
2011-04-29 16:52:12 +02:00
Henri Verbeet
c5baf8f237
wined3d: Merge the IWineD3DSurface::SetFormat() implementations.
2011-04-28 11:08:55 +02:00
Henri Verbeet
92120cb527
wined3d: Merge the IWineD3DSurface::SetMem() implementations.
2011-04-28 11:08:51 +02:00
Henri Verbeet
a5febcf7a1
wined3d: Merge the IWineD3DSurface::ReleaseDC() implementations.
2011-04-28 11:08:45 +02:00
Henri Verbeet
dcaca7225b
wined3d: Merge the IWineD3DSurface::GetDC() implementations.
2011-04-28 11:08:36 +02:00
Henri Verbeet
13146e216f
wined3d: Merge the IWineD3DSurface::PreLoad() implementations.
2011-04-28 11:08:27 +02:00
Henri Verbeet
34ba20fe35
wined3d: Merge the IWineD3DSurface::Unmap() implementations.
2011-04-27 11:50:53 +02:00
Henri Verbeet
825341e7c2
wined3d: Merge the IWineD3DSurface::Map() implementations.
2011-04-27 11:50:48 +02:00
Henri Verbeet
a2ef014342
wined3d: Merge the IWineD3DSurface::Release() implementations.
2011-04-27 11:50:41 +02:00
Henri Verbeet
d9ace3c9f7
wined3d: Only invalidate the INDRAWABLE location for onscreen surfaces in surface_realize_palette().
...
For offscreen surfaces this might actually remove the texture we just loaded.
2011-04-27 11:50:35 +02:00
Henri Verbeet
f63a84be61
wined3d: Merge surface_base.c into surface.c.
2011-04-26 10:46:40 +02:00
Henri Verbeet
11d44809bb
wined3d: Remove IWineD3DSurface::PrivateSetup() from the public interface.
2011-04-26 10:46:23 +02:00
Henri Verbeet
c852200b03
wined3d: Get rid of IWineD3DSurface::GetType().
2011-04-22 10:44:28 +02:00
Henri Verbeet
516ade9b2b
wined3d: Also update ds_current_size if there's no current DS location in surface_load_ds_location().
2011-04-19 13:29:28 +02:00
Henri Verbeet
84d50f7353
wined3d: Remove IWineD3DSurface::GetImplType() from the public interface.
2011-04-18 11:45:55 +02:00
Henri Verbeet
52edf556f6
wined3d: Merge surface_gdi.c into surface.c.
2011-04-18 11:45:51 +02:00
Henri Verbeet
fadfdf21c0
wined3d: Forward surface refcounts to the container.
...
This will prevent textures from being released if one of its surfaces is still
in use by the stateblock. We have similar constructions in d3d8 and d3d9, but
those won't prevent the wined3d texture from being released.
2011-04-18 11:45:17 +02:00
Henri Verbeet
a5983e0c3d
wined3d: Use the correct mask for depth/stencil locations in surface_load_ds_location().
2011-04-18 11:45:09 +02:00
Henri Verbeet
66875c6dc7
wined3d: Don't flush just because a swapchain has multiple contexts.
...
If you really have e.g. multiple draws to the same drawable, this is not
enough, and you should use the StrictDrawOrdering registry setting. In the
other cases it just slows things down unnecessarily.
2011-04-15 10:07:58 +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
17c51d49b7
wined3d: Flush after accessing the front buffer in flush_to_framebuffer_drawpixels().
2011-04-11 23:54:09 +02:00
Henri Verbeet
55e957a31a
wined3d: Flush after accessing the front buffer in surface_blt_fbo().
2011-04-11 23:54:05 +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
a96f749ce0
wined3d: Add support for depth blits to the blitter.
2011-04-06 21:17:48 +02:00
Henri Verbeet
519a3a9162
wined3d: Add depth fills to the blitter interface.
2011-04-06 12:05:07 +02:00
Henri Verbeet
99bfd81714
wined3d: Allow depth and stencil clears on surfaces other than the current depth / stencil buffer.
2011-04-06 12:05:06 +02:00
Henri Verbeet
419d6e9acd
wined3d: Introduce a separate function for depth fills.
2011-04-06 12:05:06 +02:00
Henri Verbeet
90da00927e
wined3d: Make "blit_operation" naming a bit more consistent.
2011-04-06 12:05:06 +02:00
Henri Verbeet
b372faec3c
wined3d: Correctly check if the destination format is FBO attachable in fbo_blit_supported().
...
Like ca381b610c
, this was introduced by
f1ca14cb5b
.
2011-04-05 11:14:04 +02:00
Henri Verbeet
032f8702ed
wined3d: Fix partial depth buffer copies.
...
Don't overwrite the entire buffer if only part of it is not current. The data
we're copying may not be completely current either. This is for the case where
the inner rect is not current and the outer edge is. The reverse case where
the inner rect is current and we need to mask already works correctly.
2011-04-05 11:13:46 +02:00
Henri Verbeet
0ce17ea27e
wined3d: Don't bother setting a depth render buffer for WINED3DFMT_NULL render targets.
2011-04-05 11:13:39 +02:00
Henri Verbeet
692aa004d0
wined3d: Rename "numContexts" to "context_count".
2011-03-31 12:37:47 +02:00
Henri Verbeet
c9ba0949c2
Revert "wined3d: Prevent crash when blit_priv is NULL.".
...
This reverts commit 37aadc9e37
.
This patch was superseded by b2132202c7
.
2011-03-30 12:17:44 +02:00
Henri Verbeet
c5bf96c951
wined3d: Get rid of IWineD3DBaseTextureClass.
2011-03-29 12:34:40 +02:00
Konrad Rzepecki
37aadc9e37
wined3d: Prevent crash when blit_priv is NULL.
2011-03-29 12:19:48 +02:00
Henri Verbeet
eb5bfad18d
wined3d: Get rid of the IWineD3DBaseTexture typedefs.
2011-03-28 17:08:52 +02:00
Henri Verbeet
fd8e18bd2b
wined3d: Remove COM from the texture implementation.
2011-03-28 17:08:52 +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
4a10bbc76d
wined3d: Generalize AddDirtyRect() / AddDirtyBox() to AddDirtyRegion().
2011-03-15 17:14:07 +01:00
Henri Verbeet
2b18192e7a
wined3d: Get rid of IWineD3DSurface::GetDesc().
2011-03-11 11:40:31 +01: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
60a710455e
wined3d: Try to evict the surface's sysmem copy in surface_load_location().
...
The memory may not be freed until surface destruction otherwise. The PBO
creation code in surface_prepare_system_memory() also depends on the SYSMEM
location being recreated regularly, although arguably that's just a symptom of
the resource location management being somewhat broken.
2011-03-07 11:10:14 +01:00
Henri Verbeet
b1e03b3250
wined3d: Clear SFLAG_LOCKED as soon as possible in IWineD3DSurfaceImpl_Unmap().
2011-03-07 11:10:10 +01:00
Henri Verbeet
eb3796083a
wined3d: Get rid of the SFLAG_LOCKED hack in flush_to_framebuffer_drawpixels().
2011-03-07 11:10:06 +01:00
Henri Verbeet
39aa477e4c
wined3d: Pass gl_info to surface_bind().
2011-03-04 16:25:58 +01:00
Henri Verbeet
af0a4b6956
wined3d: Pass gl_info to basetexture_bind().
2011-03-03 17:47:14 +01:00
Henri Verbeet
75c8e9f7b4
wined3d: Use EXT_texture_sRGB_decode to avoid sRGB texture duplication.
2011-03-03 17:47:13 +01:00
Henri Verbeet
ddc7a803e9
wined3d: Standalone surfaces should never be sRGB.
2011-03-02 12:50:59 +01:00
Henri Verbeet
1de6adfbae
wined3d: Make IWineD3DResourceImpl an independent structure.
2011-03-01 13:21:59 +01:00
Henri Verbeet
39497ff4d1
wined3d: Remove IWineD3DResource::UnLoad() from the public interface.
2011-02-28 11:09:48 +01:00
Gerald Pfeifer
54d98ba791
wined3d: Remove an old hack around Mesa choking on protected memory from flush_to_framebuffer_drawpixels.
2011-02-14 13:33:30 +01:00
Henri Verbeet
e1815f5e3b
wined3d: Get rid of the IWineD3DPalette typedefs.
2011-02-03 13:15:17 +01:00
Henri Verbeet
074977d404
wined3d: Get rid of the IWineD3D typedefs.
2011-02-02 12:22:53 +01:00
Henri Verbeet
7438e42f1a
wined3d: Do checks at the start of surface_init() (LLVM/Clang).
2011-01-26 15:00:12 +01:00
Henri Verbeet
4891ca168e
wined3d: Remove IWineD3DSurface::DrawOverlay() from the public interface.
2011-01-24 14:43:26 +01:00
Henri Verbeet
05603c4568
wined3d: Remove IWineD3DSurface::RealizePalette() from the public interface.
2011-01-24 14:43:26 +01:00
Henri Verbeet
ce050c89de
wined3d: Get rid of IWineD3DSurface::GetData().
2011-01-21 18:37:09 +01:00
Henri Verbeet
0b7fef751e
wined3d: Remove IWineD3DSurface::LoadTexture() from the public interface.
2011-01-21 18:37:06 +01:00
Henri Verbeet
629d81b192
wined3d: Remove IWineD3DSurface::BindTexture() from the public interface.
2011-01-21 18:37:04 +01:00
Henri Verbeet
227efbbf65
wined3d: Store a pointer to an array of IWineD3DSwapChainImpl pointers in the device.
2011-01-20 12:19:04 +01:00
Henri Verbeet
d91a413ade
wined3d: Store an IWineD3DClipperImpl pointer in IWineD3DSurfaceImpl.
2011-01-18 12:32:10 +01:00
Henri Verbeet
134137cdb4
wined3d: Pass an IWineD3DResourceImpl pointer to resource_cleanup().
2011-01-06 11:33:24 +01:00
Henri Verbeet
7080922e0e
wined3d: Pass an IWineD3DResourceImpl pointer to resource_init().
2011-01-06 11:33:19 +01:00
Henri Verbeet
d72520b5cc
wined3d: Remove IWineD3DBaseTexture::BindTexture() from the public interface.
2011-01-05 17:22:01 +01:00
Henri Verbeet
e5d1a0c72d
wined3d: Use surface_modify_location() to manipulate location flags in IWineD3DSurfaceImpl_Unmap().
...
Directly setting SFLAG_INFRAWABLE breaks for offscreen render targets, where
the drawable and texture are the same thing. Before commit
d3fd7b247b
the explicit load of the texture
location with the default RTL_READTEX render target lock mode would have
prevented the flags from becomming inconsistent.
2011-01-05 17:21:28 +01:00
Henri Verbeet
3a59137b09
wined3d: Pass an IWineD3DBaseTextureImpl pointer to internal_preload().
2011-01-04 11:09:52 +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
7f09eb6a7a
wined3d: Pass an IWineD3DDeviceImpl pointer to free_private().
2010-12-09 12:14:31 +01:00
Henri Verbeet
4ba3b64c57
wined3d: Pass an IWineD3DDeviceImpl pointer to alloc_private().
2010-12-09 12:14:25 +01:00
Henri Verbeet
a3b2407824
wined3d: Remove IWineD3DBaseTexture::SetDirty() from the public interface.
2010-12-09 12:14:19 +01:00
Henri Verbeet
018a48493b
wined3d: Remove a redundant SetDirty() call from IWineD3DSurfaceImpl_Map().
...
The surface_add_dirty_rect() call already does this.
2010-12-08 11:27:44 +01:00
Henri Verbeet
46f3cc9df6
wined3d: Don't leak heapMemory in surface_remove_pbo().
2010-12-08 11:27:34 +01:00
Henri Verbeet
7363b0e98a
wined3d: Explicitly pass data and gl_info to shader_deselect_depth_blt().
2010-11-30 10:57:23 +01:00
Henri Verbeet
93a824d744
wined3d: Explicitly pass data and gl_info to shader_select_depth_blt().
2010-11-30 10:57:17 +01:00
Henri Verbeet
03f7a2d88e
wined3d: Get rid of the remaining "Flags".
2010-11-23 13:15:36 +01:00
Henri Verbeet
4f651808fc
wined3d: Disallow empty surfaces.
2010-11-18 12:37:36 +01:00
Henri Verbeet
faba8d734d
wined3d: Send a notification that the GL texture changed in flip_surface().
...
Strictly speaking the texture doesn't get unloaded, but it does get associated
with a different surface. The FBO cache in particular is much happier when it
gets notified of these.
2010-11-17 14:01:14 +01:00
Henri Verbeet
4dc28005eb
wined3d: Remove a redundant flag in IWineD3DSurfaceImpl_SetMem().
2010-11-16 13:48:42 +01:00
Henri Verbeet
745126b05d
wined3d: Properly recreate the sysmem resource location in IWineD3DSurfaceImpl_SetMem().
...
Otherwise we could end up with surfaces that have SFLAG_INSYSMEM set, but no
actual system memory allocated. This was exposed by
3bbe658ef1
.
2010-11-15 15:04:41 +01:00
Henri Verbeet
44b9712cd6
wined3d: Add a trace to IWineD3DSurfaceImpl_SetMem().
2010-11-15 15:04:36 +01:00
Henri Verbeet
60b5dc04b7
wined3d: Rename the IWineD3DPaletteImpl "Flags" field to "flags".
2010-11-15 15:04:32 +01:00
Henri Verbeet
efb185dcd5
wined3d: Rename the wined3d_format "Flags" field to "flags".
2010-11-12 15:43:08 +01:00
Henri Verbeet
027fdb31c2
wined3d: Rename the IWineD3DSurfaceImpl "Flags" field to "flags".
2010-11-12 15:43:07 +01:00
Henri Verbeet
a59ee29dec
wined3d: Simplify a condition in IWineD3DSurfaceImpl_LoadTexture().
2010-11-12 15:43:07 +01:00
Henri Verbeet
4bd1f04fbd
wined3d: Check for depth/stencil surfaces in general in IWineD3DSurfaceImpl_Unmap().
...
Instead of just the current one.
2010-11-12 15:43:07 +01:00