Henri Verbeet
70f4e66f84
wined3d: IWineD3DBuffer_Unmap() can't fail.
2010-10-15 16:19:54 +02:00
Henri Verbeet
9224751a13
wined3d: Pass a wined3d_state structure to use_vs().
2010-09-28 17:33:17 +02:00
Henri Verbeet
153d8d43aa
wined3d: Move stream state to wined3d_state.
2010-09-21 14:16:58 +02:00
Henri Verbeet
e31ea51bab
wined3d: Move the vertex declaration to wined3d_state.
2010-09-18 13:05:54 +02:00
Henri Verbeet
6ce848bee4
wined3d: Introduce a structure for stream state.
2010-09-14 11:43:54 -05:00
Henri Verbeet
b68d257710
wined3d: Get rid of redundant comparisons against NULL / 0.
2010-09-14 09:43:33 -05:00
Henri Verbeet
fd7c1cbf05
wined3d: IWineD3DBuffer_GetDesc() should never fail.
2010-09-14 09:43:22 -05: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
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
5f2fcfdd6b
wined3d: Reattach FBO attachments when any of the corresponding surfaces is unloaded.
2010-08-16 13:47:08 +02:00
Henri Verbeet
64e2525ba0
wined3d: Release the context on an error path in buffer_PreLoad().
2010-06-07 12:22:44 +02:00
Henri Verbeet
e8ac9bbd7f
wined3d: Get rid of GLINFO_LOCATION.
2010-05-25 13:29:00 +02:00
Henri Verbeet
5dff410254
wined3d: Explicitly pass GL info to buffer_get_sysmem().
2010-05-21 14:37:52 +02:00
Henri Verbeet
e647309402
wined3d: Explicitly pass GL info to buffer_create_buffer_object().
2010-05-21 14:37:52 +02:00
Henri Verbeet
e536f99871
wined3d: Set the buffer.c GLINFO_LOCATION to *gl_info.
2010-05-21 14:37:52 +02:00
Stefan Dösinger
481aca47ad
wined3d: Don't use GL_ARB_map_buffer_range for now.
...
There are numerous problems with this extension, and there are no
visible upsides. In the best case dynamic VBOs are just as fast as no
VBO at all.
2010-05-10 13:45:16 +02:00
Henri Verbeet
49e076eabd
wined3d: Separate context acquisition and state application.
2010-05-04 13:14:59 +02:00
Henri Verbeet
a4fad54134
wined3d: Don't write past the end of the buffer's conversion_map.
2010-04-12 11:33:32 +02:00
Alexandre Julliard
90f4ae6948
wined3d: Remove unused offset parameter in buffer_get_memory.
2010-04-09 15:47:23 +02:00
Henri Verbeet
2533860114
wined3d: Initialization functions don't allocate.
2010-03-30 14:49:31 +02:00
Stefan Dösinger
1181762f99
wined3d: Implement manual buffer fencing.
2010-03-23 12:31:15 +01:00
Stefan Dösinger
fd13a6ae23
wined3d: Partially implement unserialized buffers with the apple extension.
2010-03-23 12:30:18 +01:00
Stefan Dösinger
5d94fe2095
wined3d: Add a function for deleting the GL buffer.
2010-03-23 12:29:33 +01:00
Henri Verbeet
3aaa6ee6e7
wined3d: Rename GlPixelFormatDesc to wined3d_format_desc.
2010-03-19 14:31:47 +01:00
Stefan Dösinger
b621fac215
wined3d: Merge two if conditions in buffer.c.
2010-03-17 13:36:17 +01:00
Henri Verbeet
ec10c1ed8d
wined3d: Add missing checkGLcall's to buffer_Map().
2010-03-17 10:06:09 +01:00
Stefan Dösinger
cc6d17ba7c
wined3d: Check the alignment of mapped buffer pointers.
...
Windows returns 32 byte aligned pointers when locking vertex and index
buffers, and some applications(Half Life 2, Alpha Prime, possibly others)
rely on this. Check the alignment and fall back to double buffered
buffers with HeapAlloced and aligned pointers if the alignment doesn't
fit.
2010-03-16 17:03:13 +01:00
Stefan Dösinger
6c53871d30
wined3d: Implement unfenced updates of double buffered buffers.
2010-03-16 17:02:50 +01:00
Stefan Dösinger
1691a6d7d0
wined3d: Use glMapBuffer for 1:1 uploads in PreLoad.
...
This is needed to take advantage of asynchronous uploads with double buffered buffers
2010-03-16 17:02:43 +01:00
Stefan Dösinger
04752991b1
wined3d: Don't DISCARD or NOOVERWRITE non-dynamic buffers.
...
Shaiya locks a non-dynamic buffer with the DISCARD flag and expects
the contents to be retained. The SDK says DISCARD requires dynamic
resources, and Windows 7 returns an error in this situation, crashing
Shaiya. This patch sticks to the Windows XP behavior and allows the
lock, but ignores the DISCARD flag to retain the buffer contents.
2010-03-16 17:02:34 +01:00
Stefan Dösinger
24e2308670
wined3d: Don't use GL_MAP_FLUSH_EXPLICIT_BIT without GL_MAP_WRITE_BIT.
2010-02-09 11:33:44 +01:00
Stefan Dösinger
8625f0cdbf
wined3d: Don't record dirty areas in a readonly lock.
2010-02-09 11:33:34 +01:00
Stefan Dösinger
224043d6cf
wined3d: Implement dynamic buffers with GL_ARB_map_buffer_range.
2010-02-02 14:09:14 +01:00
Stefan Dösinger
d499073c10
wined3d: Catch invalid buffer map parameters.
2010-01-29 14:59:02 +01:00
Stefan Dösinger
ee720f05d1
wined3d: Put the APPLE_flush_buffer_range code into the right branch.
2010-01-26 12:18:59 +01:00
Henri Verbeet
98568f0ba1
wined3d: Add support for ARB_vertex_array_bgra.
2010-01-26 12:08:27 +01:00
Stefan Dösinger
a756caac0c
wined3d: Implement subrange flushing with GL_APPLE_flush_buffer_range.
2010-01-04 12:09:34 +01:00
Stefan Dösinger
5296d5b016
wined3d: Prepare for dynamic vertex buffers.
2010-01-04 12:09:28 +01:00
Stefan Dösinger
716520b4b8
wined3d: Track separate dirty ranges in buffers.
2010-01-04 12:08:14 +01:00
Stefan Dösinger
1bd98719e6
wined3d: Set WINED3D_BUFFER_CREATEBO in buffer_init().
2010-01-04 12:07:50 +01:00
Stefan Dösinger
b9976c3d20
wined3d: Revert the GL usage confusion.
...
This is functionally a revert of
8eeb513b1a
. The language of the extension
is slightly confusing to me, but GL_STREAM_*_ARB is more dynamic than
GL_DYNAMIC_*_ARB. So use GL_STREAM usage for D3DUSAGE_DYNAMIC buffers and
GL_DYNAMIC usage for non-dynamic buffers.
2010-01-04 12:07:45 +01:00
Henri Verbeet
ea2f7a2739
wined3d: Remove some redundant returns.
2009-12-30 13:31:26 +01:00
Stefan Dösinger
4f594777a2
wined3d: Drop the VBO if too many full buffer conversions occur.
2009-12-29 11:04:03 +01:00
Stefan Dösinger
9750cca9b1
wined3d: Increment the buffer draw count if the buffer was clean.
2009-12-29 11:03:51 +01:00
Stefan Dösinger
f90b8b6352
wined3d: Rename conversion_count to something more appropriate.
2009-12-29 11:03:44 +01:00
Stefan Dösinger
1d37ae6f61
wined3d: Use unload instead of duplicating buffer remove code.
2009-12-29 11:03:24 +01:00
Stefan Dösinger
4590dc4806
wined3d: Free buffer conversion info when freeing the buffer.
2009-12-29 11:03:10 +01:00
Stefan Dösinger
8eeb513b1a
wined3d: Fix VBO buffer usage.
2009-12-16 13:04:19 +01:00
Henri Verbeet
b3defd4c80
wined3d: Rename "wineD3DDevice" to "device".
2009-12-10 11:54:47 +01:00
Henri Verbeet
b6ef17f23d
wined3d: Remove unused GetDevice() implementations.
2009-12-09 13:51:04 +01:00
Stefan Dösinger
d4275e87f1
wined3d: Add a usage flag for static buffer declarations.
2009-11-03 21:21:55 +01:00
Henri Verbeet
111307dfba
wined3d: Get rid of the GL_SUPPORT macro.
2009-10-29 13:09:33 +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
69bf130476
wined3d: Remove a redundant ActivateContext() call.
2009-10-26 11:20:26 +01:00
Henri Verbeet
47c84f4f7f
wined3d: Use the DXGI naming convention for all formats.
2009-09-25 15:15:44 +02:00
Henri Verbeet
dbc4dfc495
wined3d: Move "parent_ops" to IWineD3DResourceClass.
2009-09-18 08:55:33 -05:00
Henri Verbeet
93b0600829
wined3d: Don't free D3D buffers until the wined3d buffer is destroyed.
2009-09-18 08:55:25 -05:00
Henri Verbeet
22124bc5cb
wined3d: Add a separate function for buffer initialization.
2009-09-18 08:54:44 -05:00
Henri Verbeet
839658848c
wined3d: Properly check if an attribute is used in find_conversion_shift().
2009-08-25 11:09:45 +02:00
Henri Verbeet
16b0c6a0fd
wined3d: Properly check if an attribute is used in buffer_check_attribute().
2009-08-24 15:17:33 +02:00
Henri Verbeet
ee4d18cc83
wined3d: Pass NULL to ActivateContext() when we don't need a specific target.
...
Once we keep track of the wined3d context for each thread,
lastActiveRenderTarget won't do what we want here.
2009-07-21 14:22:44 +02:00
Henri Verbeet
9cf7888002
wined3d: Fix some cast-qual warnings.
2009-07-09 11:38:07 +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
7363b6e2e3
wined3d: Document GL context dependencies.
2009-06-26 12:05:07 +02:00
Henri Verbeet
964f4b0157
wined3d: Make sure we have an active GL context in buffer_PreLoad().
2009-06-25 11:47:16 +02:00
Henri Verbeet
37491bb5d1
wined3d: Simplify the transformed position fixup a bit.
2009-06-22 12:58:54 +02:00
Rico Schüller
3ea66d6026
wined3d: Don't allow a negative lock_count in buffer_Unmap.
2009-06-11 13:23:25 +02:00
Stefan Dösinger
d2e12a19ca
wined3d: Make use of GL_ARB_half_float_vertex.
...
This extension is a subset of GL_NV_half_float that defines support
for the stream format(same constant), but doesn't define texture
formats or immediate mode entrypoints.
2009-05-05 14:13:02 +02:00
Stefan Dösinger
1fbc6e560d
wined3d: Fix an issue in buffer_get_sysmem.
...
Checking for the doublebuffer flag can cause confusion if no VBO has
been allocated for the buffer. Checking for allocatedMemory is the
more direct approach.
2009-04-28 13:10:03 +02:00
Stefan Dösinger
926fe798c5
wined3d: Activate a thread before mapping a buffer.
...
This fixes a regression in EverQuest 2.
2009-04-28 13:10:02 +02:00
Stefan Dösinger
014c4bfc70
wined3d: Save some memory in vertex buffers.
...
In most cases we're fine with the vbo and glMapBuffer and never use the actual
heap memory copy. Try to stick to just the vbo copy and avoid allocating the
extra heap memory. In case it is needed(emulation or vertex conversion), fall
back to the old double buffering mode.
2009-04-10 11:14:32 +02:00
Stefan Dösinger
cb1c9dcda9
d3d: Remove the format from index buffers.
2009-04-09 16:28:25 +02:00
Stefan Dösinger
f0efa97413
wined3d: Remove the buffer fvf.
2009-04-09 16:28:10 +02:00
Stefan Dösinger
2a7a237170
wined3d: Merge indexbuffer and buffer implementations.
2009-04-08 11:37:24 +02:00
Stefan Dösinger
3ed94329a3
wined3d: Use Map and Unmap for index buffers.
...
Just a change in name to prepare for the next patch
2009-04-08 11:36:18 +02:00
Stefan Dösinger
dc80a3ede5
d3d: Unify WINED3DVERTEXBUFFER_DESC and WINED3DINDEXBUFFER_DESC.
2009-04-08 11:36:02 +02:00
Henri Verbeet
ef2d704183
wined3d: Store the format_desc itself in struct wined3d_stream_info_element.
2009-03-30 15:11:24 +02:00
Henri Verbeet
4434d00f84
wined3d: Unify vertex and texture formats.
...
Some fields should be redundant now, eg. gl_vtx_type and glType. I'll leave
that for a different patch to fix though.
2009-03-27 15:51:25 +01:00
Henri Verbeet
d7c7c76850
wined3d: Use separate structures for ddraw style strided data and wined3d's internal stream info.
2009-03-27 15:51:25 +01:00
Henri Verbeet
2dc7fc2916
wined3d: Remove the format field from IWineD3DResourceClass.
2009-03-13 11:29:19 +01:00
Henri Verbeet
aa3027a604
wined3d: Merge IWineD3DVertexBuffer with IWineD3DBuffer.
...
That still leaves IWineD3DIndexBuffer, but that code is also mostly similar,
except for the conversion code (which will be unused there).
2009-03-06 15:35:58 +01:00
Henri Verbeet
6324ba66ca
wined3d: Simplify IWineD3DVertexBufferImpl_PreLoad() a bit.
2009-03-06 15:35:50 +01:00
Henri Verbeet
594cc7ebc1
wined3d: Also set VBFLAG_HASDESC if we can determine we don't need conversion.
2009-03-06 15:35:28 +01:00
Henri Verbeet
33dd39c4d0
wined3d: Merge indexbuffer.c with buffer.c.
2009-02-23 12:21:10 +01:00
Henri Verbeet
392cfefbeb
wined3d: Merge vertexbuffer.c with buffer.c.
...
This just moves to code to the same file, but we want to merge the
implementations as well at some point.
2009-02-23 12:21:02 +01:00
Henri Verbeet
399d992a07
wined3d: Add IWineD3DBuffer, use it in d3d10core.
2009-02-23 12:20:45 +01:00