Commit Graph

340 Commits

Author SHA1 Message Date
Henri Verbeet 682d2fd5e6 wined3d: Implement Vulkan buffer uploads.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-17 19:58:11 +02:00
Henri Verbeet 9529f08e1a wined3d: Implement a Vulkan device memory allocator.
Note that the constants like WINED3D_ALLOCATOR_CHUNK_SIZE and
WINED3D_ALLOCATOR_MIN_BLOCK_SIZE are somewhat arbitrary, rather than the
result of careful tuning. That's mostly because we have a couple of
known stalls in e.g. the command stream that would largely invalidate
such tuning.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-17 19:58:11 +02:00
Henri Verbeet 85f9f51df8 wined3d: Do not request coherent memory in wined3d_buffer_vk_create_buffer_object().
We may get coherent memory anyway, but we don't require it.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Matteo Bruni c5eb2ed2d1 wined3d: Add a TRACE to wined3d_buffer_copy().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-02 12:57:03 +02:00
Matteo Bruni 934ddd08bb wined3d: Add a TRACE to wined3d_buffer_gl_upload_ranges().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-02 12:57:01 +02:00
Matteo Bruni b2f98ddf4b wined3d: Add a TRACE to wined3d_buffer_gl_download_ranges().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-02 12:56:58 +02:00
Matteo Bruni 3cc218d5b5 wined3d: Only invalidate STATE_INDEXBUFFER if the buffer being destroyed is bound as index buffer.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 18:34:50 +01:00
Matteo Bruni 8d87bce071 wined3d: Rename struct wined3d_map_range to struct wined3d_range.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-27 23:34:51 +01:00
Henri Verbeet dd03e37f9f wined3d: Create Vulkan buffers.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-24 17:21:13 +01:00
Henri Verbeet cf44283227 wined3d: Introduce WINED3D_BIND_INDIRECT_BUFFER.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-12 23:17:05 +01:00
Henri Verbeet 5b358e0f4c wined3d: Avoid accessing gl_info in wined3d_buffer_init().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-12 23:17:05 +01:00
Henri Verbeet 3bc8bde91b wined3d: Unload buffer resources through buffer ops.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 22:30:24 +01:00
Paul Gofman df509be8c6 wined3d: Allow loading buffers mapped through system memory.
Fixes rendering dirt on the wind shield and GL_INVALID_OPERATION
errors in "Need For Speed Shift 2".

The test succeeds on Windows with retail Direct3D 9, but fails
with debug Direct3D 9 if selected in DirectX SDK control panel:
error code is returned from _DrawIndexedPrimitive() and the
triangle is not rendered.

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-25 21:11:32 +02:00
Henri Verbeet 422fa49668 wined3d: Make the adapter responsible for copying between buffer objects.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-24 17:32:11 +02:00
Henri Verbeet c01433690d wined3d: Merge wined3d_buffer_gl_unmap() and buffer_resource_sub_resource_unmap().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-24 17:32:05 +02:00
Henri Verbeet e0dcdaedb2 wined3d: Merge wined3d_buffer_gl_map() and buffer_resource_sub_resource_map().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-24 17:32:02 +02:00
Henri Verbeet 47701b7231 wined3d: Use wined3d_context_map_bo_address() in wined3d_buffer_gl_map().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-23 19:44:17 +02:00
Henri Verbeet 179c8cc86f wined3d: Move the "buffer_object" field from struct wined3d_buffer_gl to struct wined3d_buffer.
We'll want to use this for Vulkan buffers as well.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-23 19:44:17 +02:00
Henri Verbeet 2bc6941ab0 wined3d: Derive the GL bind point for buffer object maps from the bind flags.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-23 19:44:17 +02:00
Henri Verbeet 8b780d2d8c wined3d: Use wined3d_resource_gl_legacy_map_flags() in wined3d_buffer_gl_map().
For consistency with the ARB_map_buffer_range path.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-23 19:44:17 +02:00
Henri Verbeet 6462ba5269 wined3d: Introduce wined3d_buffer_ops.buffer_prepare_location().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-16 10:09:00 +02:00
Henri Verbeet 3179a6af29 wined3d: Introduce wined3d_resource_prepare_sysmem().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-16 10:08:52 +02:00
Henri Verbeet 5b3f89ae8d wined3d: Make the adapter responsible for buffer creation and destruction.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-12 09:32:25 +02:00
Henri Verbeet e1448751ea wined3d: Download buffer ranges through buffer ops.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-08 09:02:10 +02:00
Henri Verbeet ac7ca87a68 wined3d: Upload buffer ranges through buffer ops.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-08 09:02:07 +02:00
Henri Verbeet 74b9ef2c1d wined3d: Move the "gl_info" field from struct wined3d_context to struct wined3d_context_gl.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-07 19:56:16 +02:00
Henri Verbeet 25bc1a334c wined3d: Use d3d_info to determine BGRA vertex support in wined3d_buffer_load().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-02 08:58:58 +02:00
Henri Verbeet 633cd82a3d wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_destroy_buffer_object().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-25 08:27:08 +02:00
Henri Verbeet 5239000a9e wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_create_buffer_object().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-24 10:08:24 +02:00
Henri Verbeet 1381d179f9 wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_bind().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-24 10:08:22 +02:00
Henri Verbeet 6ffc6cd5d2 wined3d: Pass a wined3d_context_gl structure to context_end_transform_feedback().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 09:46:13 +02:00
Henri Verbeet 7bdbf00b0f wined3d: Pass a wined3d_context_gl structure to context_copy_bo_address().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:16:54 +02:00
Henri Verbeet 3faa9e92a5 wined3d: Pass a wined3d_context_gl structure to context_bind_bo().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:16:48 +02:00
Paul Gofman a5ffdff2ed wined3d: Invalidate _SYSMEM location when mapping opengl buffer.
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 19:45:24 +01:00
Henri Verbeet 7d83ebeed2 wined3d: Pass bind flags to wined3d_get_format().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-31 16:17:36 +01:00
Henri Verbeet 45bf95278d wined3d: Store resource bind flags in the wined3d_resource structure.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 10:54:06 +01:00
Henri Verbeet 22b3a4f044 wined3d: Get rid of the "desc" field in struct wined3d_buffer.
Most of the information in "desc" is already stored in the wined3d_resource
structure.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 10:54:04 +01:00
Henri Verbeet b579afd30a wined3d: Move the "buffer_object" field from struct wined3d_buffer to struct wined3d_buffer_gl.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 10:11:37 +01:00
Henri Verbeet fc9c8e4758 wined3d: Move the "buffer_object_usage" field from struct wined3d_buffer to struct wined3d_buffer_gl.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 21:18:27 +02:00
Henri Verbeet 12b5c91485 wined3d: Move the "buffer_type_hint" field from struct wined3d_buffer to struct wined3d_buffer_gl.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 21:18:27 +02:00
Henri Verbeet 15962381e2 wined3d: Introduce a separate structure for OpenGL buffer information.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 21:18:27 +02:00
Henri Verbeet 944e92ba06 wined3d: Pass the wined3d_buffer_desc structure directly to buffer_init().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-23 13:55:37 +02:00
Henri Verbeet 1ae45f47cd wined3d: Get rid of the "format_id" parameter to buffer_init().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-23 13:55:35 +02:00
Matteo Bruni 097c4b135b wined3d: Dump buffer descriptor in wined3d_buffer_create().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-13 00:30:51 +02:00
Henri Verbeet ccbee769a4 wined3d: Get rid of the "attribute_size" field in struct wined3d_format.
Note that "byte_count" is 4 for R10G10B10X2_UINT/R10G10B10X2_SNORM, while
"attribute_size" is 6. I think 4 is correct.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-10 12:31:38 +02:00
Józef Kucia eec2f1db5d wined3d: Try to avoid allocating sysmem for GPU buffers with initial data.
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>
2018-09-07 18:18:55 +02:00
Józef Kucia 3cd28caf17 wined3d: Fix initial data for non-GPU buffers.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44655
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>
2018-09-07 18:18:51 +02:00
Józef Kucia 9320424105 wined3d: Pass wined3d_adapter to wined3d_get_format().
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>
2018-08-23 20:12:29 +02:00
Henri Verbeet 8a321bba69 wined3d: Clarify a TRACE in buffer_init().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 10:16:00 +02:00
Józef Kucia bb535b1a2d wined3d: Call wined3d_cs_emit_update_sub_resource() directly in buffer_init().
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>
2018-06-20 16:02:42 +02:00