Commit Graph

10635 Commits

Author SHA1 Message Date
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
Henri Verbeet 98d3624f23 wined3d: Use wined3d_mask_from_size() in stateblock_savedstates_set_all().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00
Henri Verbeet 5a8ffed774 wined3d: Use wined3d_mask_from_size() in find_ps_compile_args().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00
Henri Verbeet e9a109835f wined3d: Use wined3d_mask_from_size() in geometry_shader_init_stream_output().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00
Henri Verbeet b0a961eaca wined3d: Properly compare integers in wined3d_graphics_pipeline_vk_compare().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00
Henri Verbeet 162fc7bd46 wined3d: Properly compare integers in wined3d_bo_slab_vk_compare().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 21:44:51 +01:00
Jan Sikorski 18a6d9ab0e wined3d: Acquire references to cleared render-target 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-24 21:44:51 +01:00
Jan Sikorski 4f7837a584 wined3d: Acquire references to cleared unordered-access 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-24 21:44:51 +01:00
Jan Sikorski d5e13912b2 wined3d: Acquire references to constant 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-24 21:44:51 +01:00
Jan Sikorski e7810388e2 wined3d: Acquire references to depth/stencil 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-24 21:44:51 +01:00
Jan Sikorski e6b61128e5 wined3d: Acquire references to unordered-access 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-24 21:44:51 +01:00
Jan Sikorski 06ce7001bd wined3d: Acquire references to 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-21 18:40:23 +01:00
Jan Sikorski 2991180e47 wined3d: Acquire references to render-target 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-21 18:40:21 +01:00
Jan Sikorski c976f8fb95 wined3d: Acquire blend state references 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-21 18:40:19 +01:00
Jan Sikorski 7c0d1595e0 wined3d: Acquire rasterizer state references 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-21 18:40:16 +01:00