Zebediah Figura
d9e8f4b458
wined3d: Call wined3d_context_unmap_bo_address() when updating a buffer BO.
...
That is, don't just flush it, but unmap it as well.
As of d8e8ab21c0
, we can get here even when
!wined3d_map_persistent(). Thus we currently end up leaving BOs mapped when
performing an accelerated DISCARD map. Try to avoid that.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-10 18:09:36 +01:00
Zebediah Figura
28285f1e76
wined3d: Set resource->client.addr in buffer_resource_sub_resource_map() only if persistently mapping.
...
Be consistent with wined3d_cs_map_upload_bo(). This may change in the future,
but for now we depend on this logic in the Vulkan backend.
This fixes test_dynamic_map_synchronization() on 32-bit architectures with the
Vulkan backend, which is currently broken because we try to perform accelerated
NOOVERWRITE maps while unmapping the same BOs.
Fixes: d8e8ab21c0
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-10 18:09:30 +01:00
Zebediah Figura
06e178e87f
wined3d: Initialize map_ptr to NULL in wined3d_context_vk_create_slab_bo().
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-10 18:09:26 +01:00
Matteo Bruni
ee78b46e8a
wined3d: Skip non-color outputs in SM4 shader output mapping.
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 20:08:27 +01:00
Matteo Bruni
84dcf5279f
wined3d: Improve comment in wined3d_query_vk_issue().
...
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 20:08:21 +01:00
Zebediah Figura
86f0ae8efb
wined3d: Use the chunk allocator for GL uniform buffers.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 20:08:02 +01:00
Zebediah Figura
b208711214
wined3d: Use the chunk allocator for GL texture buffers.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 20:07:59 +01:00
Zebediah Figura
1e72b622f0
wined3d: Use the chunk allocator for GL pixel unpack buffers.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 20:24:15 +01:00
Zebediah Figura
5fb6d5cc31
wined3d: Use the chunk allocator for GL atomic counter buffers.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 20:24:14 +01:00
Henri Verbeet
7c844cd3c9
wined3d: Use the chunk allocator for GL indirect draw buffers.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 20:24:14 +01:00
Henri Verbeet
576e44e040
wined3d: Use wined3d_bit_scan() in shader_arb_generate_pshader().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-01 20:36:04 +01:00
Henri Verbeet
59b06fdb43
wined3d: Use wined3d_bit_scan() in shader_generate_arb_declarations().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-01 20:36:01 +01:00
Zebediah Figura
d8e8ab21c0
wined3d: Allow DISCARD maps to be accelerated even on 32-bit architectures.
...
We will still block on a subsequent NOOVERWRITE map, so in practice this
probably doesn't remove any bottlenecks. However, it leads to clearer code, and
it matches what will need to be done for textures.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-31 18:38:55 +01:00
Henri Verbeet
01bd9a7028
wined3d: Introduce a wined3d_bo_gl_unmap() helper.
...
Mirroring wined3d_bo_vk_unmap().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-31 18:38:55 +01:00
Zebediah Figura
1af6cb07b2
wined3d: Introduce WINED3D_LOCATION_CLEARED and use it for the initial state of buffers.
...
The practical effect of this is to defer clearing buffers until they are used.
Under normal circumstances the buffer will be initially discarded, in which
case we need not clear it at all, and may even avoid ever allocating sysmem.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Zebediah Figura
6b96021a1c
wined3d: Prefer mapping a BO if the buffer has WINED3D_BUFFER_USE_BO set.
...
Instead of checking whether a BO already exists.
This will end up allocating a BO earlier in some cases. This is not particularly
impactful by itself, since we already would have sysmem available and thus could
use it without a performance penalty. However, we would like to avoid ever
allocating sysmem where not necessary, in particular by deferring allocation of
any location at all until the resource is written to.
This also has the side effect of fixing test_map_synchronization() on 64-bit
architectures, broken since 194b47b4fd
. The test
creates a buffer, maps it once, then maps it again with NOOVERWRITE while the
GPU is still drawing, expecting the new data to be read by the GPU during the
draw. On 32-bit machines, and 64-bit machines before the offending commit, we do
the following:
First map: uses SYSMEM since the BO is not created yet
Draw: upload to VBO
Second map: map the existing VBO with GL_MAP_UNSYNCHRONIZED_BIT
After 194b47b4fd
, we don't use GL_MAP_UNSYNCHRONIZED_BIT since the buffer has
READ access, which means that the second map will be synchronized and wait for
the draw to complete.
After this patch, we do the following:
First map: create and map a VBO (not unsynchronized, but coherent and
persistently mapped)
Draw: use mapped VBO
Second map: write to existing (coherent) VBO, which is unsynchronized
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Zebediah Figura
287bfc7758
wined3d: Use wined3d_buffer_load_location() in wined3d_buffer_get_memory().
...
wined3d_buffer_load_location() can handle loading from
WINED3D_LOCATION_DISCARDED just fine, so use it instead of duplicating the
functionality here.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Henri Verbeet
837e605076
wined3d: Use wined3d_bit_scan() in shader_arb_load_np2fixup_constants().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Henri Verbeet
4946471bec
wined3d: Use wined3d_bit_scan() in shader_glsl_generate_fragment_shader().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Henri Verbeet
1a7dbab1c4
wined3d: Use wined3d_bit_scan() in shader_generate_glsl_declarations().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Henri Verbeet
bbb7d41eae
wined3d: Use wined3d_bit_scan() in shader_glsl_load_constantsB().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Henri Verbeet
6f150854e7
wined3d: Use wined3d_bit_scan() in shader_glsl_load_constants_i().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:21 +01:00
Alexandre Julliard
f0cd33c69e
include: Add support for defining Win32 types as 'long' where possible.
...
Add -DWINE_NO_LONG_TYPES to modules that still have compilation
warnings with long types.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 20:38:22 +01:00
Henri Verbeet
bfac6c990d
wined3d: Use wined3d_bit_scan() in set_glsl_shader_program().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:59:14 +01:00
Henri Verbeet
c265f2f2ac
wined3d: Use wined3d_bit_scan() in wined3d_context_gl_map_fixed_function_samplers().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:59:09 +01:00
Henri Verbeet
d6a7918a46
wined3d: Use wined3d_bit_scan() in draw_primitive_immediate_mode().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:58:59 +01:00
Henri Verbeet
d89bfc39c5
wined3d: Use wined3d_bit_scan() in context_preload_textures().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:58:51 +01:00
Henri Verbeet
a7cd33ef51
wined3d: Get rid of a superfluous cast.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 17:58:47 +01:00
Henri Verbeet
caea3d10fa
wined3d: Use wined3d_bit_scan() in context_update_stream_info().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:57 +01:00
Henri Verbeet
1e33280864
wined3d: Use wined3d_bit_scan() in wined3d_device_process_vertices().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:57 +01:00
Henri Verbeet
dc990b6b2b
wined3d: Use wined3d_bit_scan() in vshader_get_input().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Henri Verbeet
8350e026e8
wined3d: Use wined3d_uint32_compare() in glsl_program_key_compare().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Henri Verbeet
ceb9994669
wined3d: Use wined3d_uint32_compare() in compare_sig().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Jan Sikorski
b49062303e
wined3d: Acquire references to mip-map generation shader resource views for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Jan Sikorski
a33ed42ffe
wined3d: Acquire references to unordered-access view counter buffers for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Jan Sikorski
51c10cbc33
wined3d: Acquire references to blitted resources for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Jan Sikorski
06a5337f7b
wined3d: Acquire references to updated resources for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Zebediah Figura
ff94b838fd
wined3d: Handle structured buffers in wined3d_unordered_access_view_vk_clear().
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:56 +01:00
Alexandre Julliard
3527230c46
include: Remove the wine_ prefix on rbtree functions.
...
Add defines for frequently-used functions.
For compatibility with vkd3d.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 21:53:55 +01:00
Henri Verbeet
c8c79a9043
wined3d: Use wined3d_mask_from_size() in set_glsl_shader_program().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Henri Verbeet
8c7dce6949
wined3d: Use wined3d_mask_from_size() in shader_glsl_generate_stream_output_setup().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Henri Verbeet
02106b0195
wined3d: Use wined3d_mask_from_size() in shader_glsl_gather4().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Henri Verbeet
e804eebe0b
wined3d: Use wined3d_mask_from_size() in shader_glsl_store_uav().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Jan Sikorski
6e0e2bef5d
wined3d: Acquire references to vertex buffers for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Jan Sikorski
c36351be1e
wined3d: Acquire references to stream output buffers for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Jan Sikorski
8641353442
wined3d: Acquire references to index buffers for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Jan Sikorski
5f417adf18
wined3d: Acquire references to indirect draw buffers for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Jan Sikorski
3fb9a8ea51
wined3d: Acquire references to indirect dispatch buffers for command lists by inspecting CS packets.
...
Signed-off-by: Jan Sikorski <jsikorski@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 20:50:49 +01:00
Zebediah Figura
9206277105
d3d11: Report D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER.
...
This fixes a black screen in The Unfinished Swan.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00
Zebediah Figura
59636714e7
d3d11: Report D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER.
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00