Commit Graph

348 Commits

Author SHA1 Message Date
Józef Kucia aa0cdc5146 wined3d: Replace WINED3D_BUFFER_CREATEBO with WINED3D_BUFFER_USE_BO.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-27 20:10:05 +09:00
Józef Kucia 0dcf255b51 wined3d: Do not call wined3d_buffer_map() before "buffer->maps" is initialized.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-27 20:10:01 +09:00
Józef Kucia d39560f33f wined3d: Simplify buffer_is_fully_dirty().
The buffer_invalidate_bo_range() ensures that if the whole buffer was
invalidated the dirty areas array contains exactly one element.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-27 20:09:58 +09:00
Henri Verbeet 8ae3a9b624 wined3d: Introduce a helper function to allocate arrays.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-24 16:19:01 +09:00
Stefan Dösinger d3f8efe546 wined3d: Get rid of WINED3D_BUFFER_FLUSH.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-18 15:07:27 +09:00
Henri Verbeet d85706381c wined3d: Merge drawStridedFast() and drawStridedInstanced().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-07 12:57:36 +09:00
Henri Verbeet f3c155cc56 wined3d: Merge drawStridedSlow() and drawStridedSlowVs().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-07 12:57:34 +09:00
Józef Kucia 4affb95ebb wined3d: Introduce helper function for binding buffers.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-22 23:51:32 +09:00
Józef Kucia 446ee50b90 wined3d: Prevent possible integer overflow in buffer_invalidate_bo_range().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-22 00:36:29 +09:00
Józef Kucia 94039385f9 wined3d: Implement copying of buffer resources.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-22 00:36:28 +09:00
Henri Verbeet e6e0c22783 wined3d: Set WINED3D_BUFFER_DOUBLEBUFFER for managed buffers as well.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-05 15:45:22 +01:00
Józef Kucia 62658ec5b8 wined3d: Add support for buffers in wined3d_device_update_sub_resource().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-05 11:51:01 +01:00
Alex Henrie 32d73eab5c wined3d: Avoid double initialization.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-03 20:03:41 +01:00
Józef Kucia 7b9d06b494 wined3d: Introduce wined3d_resource_unmap().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:37 +09:00
Józef Kucia 535b3fe029 wined3d: Introduce wined3d_resource_map().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-04 14:41:37 +09:00
Andrey Gusev 3c8635c8d7 wined3d: TRACE fixes. 2015-10-01 00:00:46 +09:00
Henri Verbeet 2773b27bb1 wined3d: Use unsigned mask constants in shifts. 2015-08-26 23:53:22 +09:00
Henri Verbeet 7f416ff339 wined3d: Validate "data" in buffer_init(). 2015-07-31 12:08:53 +02:00
Stefan Dösinger c8d1a70804 wined3d: Set the gl resource type in resource_init. 2015-06-08 18:51:24 +09:00
Stefan Dösinger 3c0ed9ce0a wined3d: Introduce resource-type specific format flags. 2015-04-24 19:08:35 +09:00
Stefan Dösinger da5041eb4b wined3d: Check the d3d buffer to find converted attributes.
This fixes some tests with ARB shaders that were broken since
1360af6adc. When buffer_internal_preload
is called by context_update_stream_info, si->elements[i].data is not yet
set.
2015-02-06 22:20:26 +09:00
Matteo Bruni 79a0dece8b wined3d: Use the core version of the gl*Buffer* functions. 2015-01-15 11:44:20 +01:00
Henri Verbeet eb24c9578c wined3d: Keep a reference to the resource in rendertarget views. 2014-08-21 12:24:21 +02:00
Henri Verbeet 9020ef9675 wined3d: Make the "desc" parameter to wined3d_buffer_create() const. 2014-08-04 14:23:40 +02:00
Henri Verbeet bc019fcbbd wined3d: Track synchronized buffer maps.
Instead of trying to infer unsynchronized ones.
2014-07-18 19:13:37 +02:00
Henri Verbeet 01251f3d3c wined3d: Use the previous "dirty" status to set WINED3D_BUFFER_NOSYNC in wined3d_buffer_map().
This (presumably) fixes a regression introduced by commit
c1032e977b.
2014-07-18 19:13:36 +02:00
Stefan Dösinger cf11933701 wined3d: Remove wined3d_buffer_set/get_priority. 2014-07-16 16:10:01 +02:00
Henri Verbeet 68339456a8 wined3d: Always mark vertex buffers as used in context_apply_draw_state().
The issue this solves is that buffer_internal_preload() is only called when
STATE_VDECL or STATE_STREAMSRC is invalidated, but that doesn't happen for
regular buffer maps. We'd like to be able to just call
buffer_internal_preload() here, but buffer_internal_preload() has dependencies
on context_stream_info_from_declaration() and vice versa.
2014-07-14 19:26:17 +02:00
Henri Verbeet c1032e977b wined3d: Filter redundant WINED3D_MAP_DISCARD buffer maps. 2014-03-04 11:50:54 +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 10a8b2cd7f wined3d: Remove resource->allocatedMemory. 2014-01-16 21:04:19 +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 d1e44ff775 wined3d: Pass a resource to wined3d_resource_free_sysmem(). 2013-09-16 12:51:13 +02:00
Henri Verbeet 261246ef21 wined3d: Pass a resource to wined3d_resource_allocate_sysmem(). 2013-09-16 12:51:13 +02:00
Stefan Dösinger b8eb171b6b wined3d: Explicitly pass the state information to buffer_internal_preload. 2013-09-12 17:48:20 +02:00
Stefan Dösinger d8c43aabf7 wined3d: Move the decoded stream info into the context. 2013-09-12 17:48:14 +02:00
Stefan Dösinger a0b56d9c59 wined3d: Pass stream info and needed fixups to buffer_find_decl. 2013-09-12 17:48:11 +02:00
Stefan Dösinger cd203b38a6 wined3d: Pass the context to the main buffer preload function. 2013-09-09 22:10:01 +02:00
Stefan Dösinger 87f931dc64 wined3d: Only invalidate STATE_INDEXBUFFER for the current context in buffer_get_sysmem(). 2013-09-09 22:10:00 +02:00
Stefan Dösinger 1cf192172e wined3d: Only invalidate STATE_INDEXBUFFER for the current context in buffer_create_buffer_object(). 2013-09-09 22:10:00 +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
Henri Verbeet 35a8bf0e1e wined3d: Move the buffer flags to buffer.c. 2013-08-30 11:18:43 +02:00
Henri Verbeet b85c2a74bb wined3d: Replace the "stateBlock" wined3d_device field with a wined3d_state structure. 2013-08-27 11:50:53 +02:00
Stefan Dösinger bd866c0294 wined3d: Implement NOOVERWRITE and DISCARD volume maps. 2013-08-26 19:01:53 +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 cbaa17d3cf wined3d: Assume the buffer has a buffer object in buffer_add_dirty_area(). 2013-08-15 16:24:09 +02:00
Henri Verbeet 4eb39ec5f4 wined3d: Make buffer_add_dirty_area() never fail. 2013-08-15 16:24:07 +02:00
Henri Verbeet 5e64fd7049 wined3d: Don't bother downloading buffer contents on destruction. 2013-08-15 16:24:04 +02:00
Henri Verbeet ffc9f535eb wined3d: Handle pre-transformed vertices in the GLSL vertex pipe.
This also avoids a fallback to drawStridedSlow().
2013-06-14 11:46:31 +02:00
Henri Verbeet c756496326 wined3d: Rename the device "strided_streams" field to "stream_info".
The "strided" in there is mostly historic, it hasn't really been accurate for
a while now.
2013-04-22 15:26:11 +02:00
Henri Verbeet 00cc81dc69 wined3d: Simplify DISCARD / READONLY handling in wined3d_buffer_map() a bit. 2013-04-16 12:13:59 +02:00
Henri Verbeet 12a05be5b6 wined3d: Use GL_STATIC_DRAW_ARB for static buffers.
This mostly affects the initial placement of the VBO. If an application really
does use a static buffer as if it was a dynamic one the driver is likely to
migrate it out of VRAM anyway, we shouldn't penalize more well-behaved
applications for that.
2013-04-15 15:16:11 +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
Stefan Dösinger 151407e5bf wined3d: Shadow buffers in sysmem when software vertexprocessing is used. 2013-01-15 16:24:50 +01:00
Henri Verbeet 78984cf46c wined3d: Get rid of ENTER_GL / LEAVE_GL. 2012-12-11 12:03:39 +01: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 a6ffab3bf5 wined3d: Rename WINED3DLOCK_* to WINED3D_MAP_*. 2012-06-18 17:48:56 +02:00
Henri Verbeet 0610d1eec9 wined3d: Invalidate the entire buffer on maps with WINED3DLOCK_DISCARD. 2012-06-12 17:27:43 +02:00
Henri Verbeet 69bdff6253 wined3d: Avoid moving buffers while they're mapped. 2012-05-22 18:06:51 +02:00
Henri Verbeet f2fb3f11f9 wined3d: Move the resource map count field up to wined3d_resource. 2012-05-21 21:30:52 +02:00
Henri Verbeet a331ed032e wined3d: Properly check for transformed position in buffer_check_attribute(). 2012-05-03 23:45:21 +02:00
Henri Verbeet de43de510a wined3d: Move the resource bind_count field up to wined3d_resource. 2012-04-26 19:26:14 +02: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 9a8491045e wined3d: Get rid of the WINED3DMULTISAMPLE_TYPE typedef. 2012-01-09 12:22:17 +01:00
Henri Verbeet 117af3a2b1 wined3d: Make the buffer parameter to buffer_sanitize_flags() const. 2011-11-02 12:27:55 +01:00
Henri Verbeet da64996159 wined3d: Make the buffer parameter to buffer_is_fully_dirty() const. 2011-10-31 23:53:04 +01:00
Henri Verbeet b9b2288796 wined3d: Make the buffer parameter to buffer_is_dirty() const. 2011-10-31 23:53:02 +01:00
Stefan Dösinger 5d1d07abcf wined3d: Call glFlush after updating a buffer. 2011-08-24 11:52:06 +02:00
Henri Verbeet b06e32184b wined3d: Only invalidate state for the current context in wined3d_buffer_unmap(). 2011-07-29 12:09:17 +02:00
Henri Verbeet 487cc9729b wined3d: Only invalidate state for the current context in wined3d_buffer_map(). 2011-07-28 11:29:27 +02:00
Henri Verbeet 7ee4bda63e wined3d: Add stream offsets in device_stream_info_from_declaration().
They're not going to change until the next time the stream info is updated.
This would of course mainly be useful if we managed to do more than one or two
draws with the same stream info.
2011-07-15 10:08:02 +02:00
Henri Verbeet cf421e1b3f wined3d: Don't set GL_MAP_UNSYNCHRONIZED_BIT for WINED3D_BUFFER_DISCARD maps.
WINED3D_BUFFER_DISCARD means the (current) buffer contents are undefined for
subsequent operations. I.e., the map doesn't have to wait for any pending
operations to finish, and can just return a new buffer with undefined
contents. GL_MAP_UNSYNCHRONIZED_BIT means the driver doesn't wait for previous
operations to finish, and just maps a buffer that's potentially in use. Proper
synchronization is left to the application. Note that we set both
GL_MAP_INVALIDATE_BUFFER_BIT and GL_MAP_UNSYNCHRONIZED_BIT.
GL_MAP_INVALIDATE_BUFFER_BIT corresponds to WINED3D_BUFFER_DISCARD, and might
cause the driver to return a new buffer, but it's not required to make that
optimization.
2011-07-15 10:07:41 +02:00
Henri Verbeet c5d457c8b4 wined3d: Store a struct wined3d_bo_address in struct wined3d_stream_info_element.
Instead of using separate fields for the buffer object and offset.
2011-07-11 11:53:42 +02:00
Henri Verbeet 89bf30a25e wined3d: Return data as struct wined3d_bo_address in buffer_get_memory(). 2011-07-11 11:53:39 +02:00
Henri Verbeet b1664a2c85 wined3d: Get rid of some IWineD3D* references. 2011-07-04 13:44:41 +02:00
Henri Verbeet c3c131ab34 wined3d: Only invalidate STATE_STREAMSRC for bound buffers. 2011-06-23 09:47:35 +02:00
Henri Verbeet 14bc0e9ef2 wined3d: Invalidate STATE_STREAMSRC when dropping VBOs. 2011-06-22 11:25:34 +02:00
Stefan Dösinger 68b15bc5ff wined3d: Give GL_ARB_map_buffer_range another try.
Nvidia's 270.xx.yy driver series fix the glMapBuffer alignment issues that caused major
performance problems. If the user is using an older driver we now drop the VBO instead of using
doublebuffered loading, which means that we fall back to the current behavior(no dynamic VBO) as
needed. Dynamic VBOs are needed on Nvidia drivers for GL_ARB_instanced_arrays.
2011-06-17 15:37:45 +02:00
Stefan Dösinger 12140b5158 wined3d: Drop the VBO when the GL alignment doesn't fit on dynamic buffers. 2011-06-17 15:37:41 +02:00
Henri Verbeet 37d70103a1 d3d8: Implement IDirect3DIndexBuffer8 private data handling on top of wined3d_resource. 2011-06-17 11:02:43 +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 c8f26a1345 wined3d: Rename IWineD3DDeviceImpl_MarkStateDirty() to device_invalidate_state(). 2011-06-06 16:18:41 +02:00
Henri Verbeet 0e0e5c3e38 wined3d: Get rid of the IWineD3DDevice typedefs. 2011-05-17 10:06:23 +02:00
Henri Verbeet 00a5f38595 wined3d: Remove object creation methods from the IWineD3DDevice interface. 2011-05-11 14:56:48 +02:00
Henri Verbeet efc080e3a3 wined3d: Get rid of wined3d_buffer_get_type(). 2011-04-22 10:44:20 +02:00
Stefan Dösinger c79864f871 wined3d: Only acquire a context in buffer::PreLoad if we have to. 2011-04-13 16:03:27 +02:00
Stefan Dösinger 5627ee49ea wined3d: Remove FLOAT16 vertex attribute conversion support.
All mayor drivers support GL_ARB_half_float_vertex now and the half
float conversion doesn't work well in practise. The only game that was
ever playable with it was Eve online.
2011-04-12 17:42:12 +02:00
Stefan Dösinger 46d879eef6 wined3d: Don't drop VBOs for full buffer reloading without conversion. 2011-04-12 17:42:12 +02:00
Henri Verbeet adb1e10979 wined3d: Get rid of wined3d_buffer_get_desc(). 2011-03-11 11:40:47 +01:00
Henri Verbeet 4be256a47c wined3d: Introduce wined3d_resource_get_desc() to retrieve the resource desc. 2011-03-10 12:52:58 +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 756fdb7c5a wined3d: Merge the various resource desc structures. 2011-03-09 12:28:58 +01:00
Henri Verbeet bea8d0a713 wined3d: Get rid of the IWineD3DBuffer typedef. 2011-03-04 16:25:58 +01:00
Henri Verbeet a27ee75ed2 wined3d: Remove COM from the buffer implementation. 2011-03-04 16:25:58 +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
Henri Verbeet c117248bd1 wined3d: Pass an IWineD3DResourceImpl pointer to resource_get_type(). 2011-01-07 10:23:37 +01:00
Henri Verbeet 7e67bcedfd wined3d: Pass an IWineD3DResourceImpl pointer to resource_set_priority(). 2011-01-07 10:23:25 +01:00
Henri Verbeet 2d9748b1e3 wined3d: Pass an IWineD3DResourceImpl pointer to resource_get_priority(). 2011-01-07 10:23:21 +01:00
Henri Verbeet a80749fd57 wined3d: Pass an IWineD3DResourceImpl pointer to resource_set_private_data(). 2011-01-07 10:23:17 +01:00
Henri Verbeet 92e439b0f0 wined3d: Pass an IWineD3DResourceImpl pointer to resource_get_private_data(). 2011-01-06 11:33:33 +01:00
Henri Verbeet a97ae0db6a wined3d: Pass an IWineD3DResourceImpl pointer to resource_free_private_data(). 2011-01-06 11:33:29 +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 5fc53941ef wined3d: Pass a wined3d_buffer structure to buffer_get_memory(). 2010-12-08 11:27:40 +01:00
Henri Verbeet a147fd9c36 wined3d: Fix the indentation in buffer_direct_upload(). 2010-11-23 13:15:39 +01:00
Henri Verbeet fadd192cba wined3d: buffer_get_sysmem() potentially invalidates the current element array buffer binding.
This fixes a regression introduced by commit
2a7a237170.
2010-11-16 13:48:46 +01:00
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