Rebase against adedebf47a9a02694b79965eb2aa670b3906b398.

This commit is contained in:
Sebastian Lackner 2017-02-25 01:10:41 +01:00
parent 23560728b5
commit 1383fc82bc
3 changed files with 52 additions and 52 deletions

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "0dc677c05fb71ba459ad20711af6637ab92e8847"
echo "adedebf47a9a02694b79965eb2aa670b3906b398"
}
# Show version information

View File

@ -1,4 +1,4 @@
From 1278d18bdb2ef4ffbc21b5d9a4a384bdd598d3d2 Mon Sep 17 00:00:00 2001
From ac5bd002bbe0d7366b443e24baf04aed612e60d8 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 19 Feb 2017 00:57:12 +0100
Subject: wined3d: Add additional synchronization CS ops.
@ -11,7 +11,7 @@ Subject: wined3d: Add additional synchronization CS ops.
4 files changed, 60 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index bbae5add951..990cb6735d7 100644
index 763fda7153..8dd5352d8d 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -26,6 +26,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d);
@ -23,7 +23,7 @@ index bbae5add951..990cb6735d7 100644
WINED3D_CS_OP_PRESENT,
WINED3D_CS_OP_CLEAR,
WINED3D_CS_OP_DISPATCH,
@@ -63,6 +65,16 @@ enum wined3d_cs_op
@@ -65,6 +67,16 @@ enum wined3d_cs_op
WINED3D_CS_OP_UNMAP,
};
@ -40,7 +40,7 @@ index bbae5add951..990cb6735d7 100644
struct wined3d_cs_present
{
enum wined3d_cs_op opcode;
@@ -328,6 +340,38 @@ struct wined3d_cs_unmap
@@ -343,6 +355,38 @@ struct wined3d_cs_unmap
HRESULT *hr;
};
@ -79,7 +79,7 @@ index bbae5add951..990cb6735d7 100644
static void wined3d_cs_exec_present(struct wined3d_cs *cs, const void *data)
{
const struct wined3d_cs_present *op = data;
@@ -1506,7 +1550,7 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
@@ -1610,7 +1654,7 @@ HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource,
op->flags = flags;
op->hr = &hr;
@ -88,7 +88,7 @@ index bbae5add951..990cb6735d7 100644
return hr;
}
@@ -1530,13 +1574,15 @@ HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resourc
@@ -1634,13 +1678,15 @@ HRESULT wined3d_cs_unmap(struct wined3d_cs *cs, struct wined3d_resource *resourc
op->sub_resource_idx = sub_resource_idx;
op->hr = &hr;
@ -105,7 +105,7 @@ index bbae5add951..990cb6735d7 100644
/* WINED3D_CS_OP_PRESENT */ wined3d_cs_exec_present,
/* WINED3D_CS_OP_CLEAR */ wined3d_cs_exec_clear,
/* WINED3D_CS_OP_DISPATCH */ wined3d_cs_exec_dispatch,
@@ -1665,6 +1711,7 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops =
@@ -1771,6 +1817,7 @@ static const struct wined3d_cs_ops wined3d_cs_st_ops =
{
wined3d_cs_st_require_space,
wined3d_cs_st_submit,
@ -114,7 +114,7 @@ index bbae5add951..990cb6735d7 100644
};
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index cfa3e889aa0..b449225d2e9 100644
index 6d844e7c40..fe74808492 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1008,6 +1008,7 @@ static void wined3d_device_delete_opengl_contexts_cs(void *object)
@ -134,10 +134,10 @@ index cfa3e889aa0..b449225d2e9 100644
return E_FAIL;
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
index abed78051cd..9d9a300fb44 100644
index 02964e4a96..21aa8720e6 100644
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -518,6 +518,8 @@ static void wined3d_shader_resource_view_cs_init(void *object)
@@ -598,6 +598,8 @@ static void wined3d_shader_resource_view_cs_init(void *object)
debug_d3dformat(resource->format->id), debug_d3dformat(view_format->id));
}
}
@ -146,15 +146,15 @@ index abed78051cd..9d9a300fb44 100644
}
static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view,
@@ -577,6 +579,7 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
view->format = view_format;
view->desc = *desc;
@@ -614,6 +616,7 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
wined3d_resource_incref(view->resource = resource);
+ wined3d_resource_acquire(resource);
wined3d_cs_init_object(resource->device->cs, wined3d_shader_resource_view_cs_init, view);
return WINED3D_OK;
@@ -723,6 +726,8 @@ static void wined3d_unordered_access_view_cs_init(void *object)
@@ -760,6 +763,8 @@ static void wined3d_unordered_access_view_cs_init(void *object)
desc, texture, view->format);
}
}
@ -163,8 +163,8 @@ index abed78051cd..9d9a300fb44 100644
}
static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view,
@@ -786,6 +791,7 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
}
@@ -776,6 +781,7 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
wined3d_resource_incref(view->resource = resource);
+ wined3d_resource_acquire(resource);
@ -172,10 +172,10 @@ index abed78051cd..9d9a300fb44 100644
return WINED3D_OK;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index bfde7d2d6d0..46ca81b4e77 100644
index 8b1a18ffcf..cfb971abdf 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3168,6 +3168,7 @@ struct wined3d_cs_ops
@@ -3180,6 +3180,7 @@ struct wined3d_cs_ops
{
void *(*require_space)(struct wined3d_cs *cs, size_t size);
void (*submit)(struct wined3d_cs *cs);
@ -183,7 +183,7 @@ index bfde7d2d6d0..46ca81b4e77 100644
void (*push_constants)(struct wined3d_cs *cs, enum wined3d_push_constants p,
unsigned int start_idx, unsigned int count, const void *constants);
};
@@ -3193,6 +3194,7 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
@@ -3205,6 +3206,7 @@ void wined3d_cs_emit_dispatch(struct wined3d_cs *cs,
unsigned int group_count_x, unsigned int group_count_y, unsigned int group_count_z) DECLSPEC_HIDDEN;
void wined3d_cs_emit_draw(struct wined3d_cs *cs, int base_vertex_idx, unsigned int start_idx, unsigned int index_count,
unsigned int start_instance, unsigned int instance_count, BOOL indexed) DECLSPEC_HIDDEN;
@ -191,7 +191,7 @@ index bfde7d2d6d0..46ca81b4e77 100644
void wined3d_cs_emit_preload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain,
const RECT *src_rect, const RECT *dst_rect, HWND dst_window_override, DWORD flags) DECLSPEC_HIDDEN;
@@ -3242,6 +3244,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
@@ -3256,6 +3258,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, enum wined
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;

View File

@ -4228,7 +4228,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -3314,7 +3314,11 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
@@ -3337,7 +3337,11 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
UINT i;
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set. */
@ -4613,7 +4613,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
struct wined3d_swapchain *src_swapchain, *dst_swapchain;
struct wined3d_texture *src_texture;
@@ -2801,7 +2841,11 @@ static BOOL surface_load_texture(struct wined3d_surface *surface,
@@ -2791,7 +2831,11 @@ static BOOL surface_load_texture(struct wined3d_surface *surface,
/* Don't use PBOs for converted surfaces. During PBO conversion we look at
* WINED3D_TEXTURE_CONVERTED but it isn't set (yet) in all cases it is
* getting called. */
@ -4625,7 +4625,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
{
TRACE("Removing the pbo attached to surface %p.\n", surface);
@@ -3775,7 +3819,11 @@ const struct blit_shader cpu_blit = {
@@ -3772,7 +3816,11 @@ const struct blit_shader cpu_blit = {
cpu_blit_blit_surface,
};
@ -4637,7 +4637,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
struct wined3d_surface *src_surface, const RECT *src_rect, DWORD flags,
const struct wined3d_blt_fx *fx, enum wined3d_texture_filter_type filter)
{
@@ -3785,9 +3833,14 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3782,9 +3830,14 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
struct wined3d_texture *dst_texture = dst_surface->container;
struct wined3d_device *device = dst_texture->resource.device;
struct wined3d_swapchain *src_swapchain, *dst_swapchain;
@ -4652,7 +4652,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
DWORD src_ds_flags, dst_ds_flags;
BOOL scale, convert;
@@ -3800,6 +3853,7 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3797,6 +3850,7 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
| WINED3D_BLT_DO_NOT_WAIT
| WINED3D_BLT_ALPHA_TEST;
@ -4660,7 +4660,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
TRACE("dst_surface %p, dst_rect %s, src_surface %p, src_rect %s, flags %#x, fx %p, filter %s.\n",
dst_surface, wine_dbgstr_rect(dst_rect), src_surface, wine_dbgstr_rect(src_rect),
flags, fx, debug_d3dtexturefiltertype(filter));
@@ -3817,10 +3871,12 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3814,10 +3868,12 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
fx->src_color_key.color_space_high_value);
}
@ -4673,7 +4673,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
if (dst_texture->sub_resources[dst_sub_resource_idx].map_count
@@ -3878,6 +3934,15 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3875,6 +3931,15 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
if (!once++)
FIXME("Can't handle WINED3D_BLT_DO_NOT_WAIT flag.\n");
flags &= ~WINED3D_BLT_DO_NOT_WAIT;
@ -4689,7 +4689,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
if (!device->d3d_initialized)
@@ -3902,11 +3967,13 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3899,11 +3964,13 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
goto fallback;
}
@ -4703,7 +4703,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
dst_swapchain = dst_texture->swapchain;
/* This isn't strictly needed. FBO blits for example could deal with
@@ -3942,13 +4009,21 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3939,13 +4006,21 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
TRACE("Depth fill.\n");
if (!wined3d_format_convert_color_to_float(dst_texture->resource.format, NULL, fx->fill_color, &color))
@ -4725,7 +4725,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
if (src_ds_flags != dst_ds_flags)
{
WARN("Rejecting depth / stencil blit between incompatible formats.\n");
@@ -3958,6 +4033,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3955,6 +4030,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
if (SUCCEEDED(wined3d_surface_depth_blt(src_surface, src_texture->resource.draw_binding,
src_rect, dst_surface, dst_texture->resource.draw_binding, dst_rect)))
return WINED3D_OK;
@ -4737,7 +4737,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
}
else
@@ -3993,7 +4073,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -3990,7 +4070,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
goto fallback;
if (SUCCEEDED(surface_color_fill(dst_surface, dst_rect, &color)))
@ -4749,7 +4749,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
else
{
@@ -4037,7 +4121,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4034,7 +4118,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
context, dst_texture->resource.draw_binding);
context_release(context);
}
@ -4761,7 +4761,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
}
}
@@ -4061,7 +4149,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4058,7 +4146,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, 0);
dst_swapchain->desc.swap_effect = swap_effect;
@ -4773,7 +4773,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
if (fbo_blit_supported(&device->adapter->gl_info, blit_op,
@@ -4082,7 +4174,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4079,7 +4171,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
wined3d_texture_invalidate_location(dst_texture, dst_sub_resource_idx,
~dst_texture->resource.draw_binding);
@ -4785,7 +4785,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
blitter = wined3d_select_blitter(&device->adapter->gl_info, &device->adapter->d3d_info, blit_op,
@@ -4092,7 +4188,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4089,7 +4185,11 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
{
blitter->blit_surface(device, blit_op, filter, src_surface,
src_rect, dst_surface, dst_rect, color_key);
@ -4797,7 +4797,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
}
}
}
@@ -4100,9 +4200,142 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
@@ -4097,9 +4197,142 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
fallback:
/* Special cases for render targets. */
if (SUCCEEDED(surface_blt_special(dst_surface, dst_rect, src_surface, src_rect, flags, fx, filter)))
@ -5389,7 +5389,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (resource->type == WINED3D_RTYPE_TEXTURE_2D)
{
@@ -2731,11 +2821,23 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3
@@ -2727,11 +2817,23 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3
TRACE("Created surface level %u, layer %u @ %p.\n", i, j, surface);
@ -5413,7 +5413,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
}
}
}
@@ -2911,7 +3013,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2907,7 +3009,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
}
else if (sub_resource->locations & WINED3D_LOCATION_BUFFER)
{
@ -5425,7 +5425,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
wined3d_texture_bind_and_dirtify(texture, context,
location == WINED3D_LOCATION_TEXTURE_SRGB);
wined3d_texture_get_pitch(texture, sub_resource_idx, &row_pitch, &slice_pitch);
@@ -2957,7 +3063,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2953,7 +3059,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
case WINED3D_LOCATION_BUFFER:
if (sub_resource->locations & (WINED3D_LOCATION_TEXTURE_RGB | WINED3D_LOCATION_TEXTURE_SRGB))
{
@ -5437,7 +5437,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (sub_resource->locations & WINED3D_LOCATION_TEXTURE_RGB)
wined3d_texture_bind_and_dirtify(texture, context, FALSE);
@@ -3491,13 +3601,49 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
@@ -3487,13 +3597,49 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
return WINED3D_OK;
}
@ -5487,7 +5487,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
TRACE("texture %p, sub_resource_idx %u, dc %p.\n", texture, sub_resource_idx, dc);
@@ -3522,6 +3668,7 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
@@ -3518,6 +3664,7 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
if (texture->resource.map_count && !(texture->flags & WINED3D_TEXTURE_GET_DC_LENIENT))
return WINED3DERR_INVALIDCALL;
@ -5495,7 +5495,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (device->d3d_initialized)
context = context_acquire(device, NULL, 0);
@@ -3539,11 +3686,40 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
@@ -3535,11 +3682,40 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
texture->flags |= WINED3D_TEXTURE_DC_IN_USE;
++texture->resource.map_count;
++sub_resource->map_count;
@ -5536,7 +5536,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
}
HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsigned int sub_resource_idx, HDC dc)
@@ -3574,6 +3750,7 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
@@ -3570,6 +3746,7 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
return WINED3DERR_INVALIDCALL;
}
@ -5544,7 +5544,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (!(texture->resource.usage & WINED3DUSAGE_OWNDC) && !(device->wined3d->flags & WINED3D_NO3D))
wined3d_surface_destroy_dc(surface);
@@ -3584,4 +3761,9 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
@@ -3580,4 +3757,9 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
texture->flags &= ~WINED3D_TEXTURE_DC_IN_USE;
return WINED3D_OK;
@ -5584,7 +5584,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
--- a/dlls/wined3d/view.c
+++ b/dlls/wined3d/view.c
@@ -522,6 +522,10 @@ static void wined3d_shader_resource_view_cs_init(void *object)
@@ -598,6 +598,10 @@ static void wined3d_shader_resource_view_cs_init(void *object)
debug_d3dformat(resource->format->id), debug_d3dformat(view_format->id));
}
}
@ -5595,9 +5595,9 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
}
static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_view *view,
@@ -598,6 +602,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
view->format = view_format;
view->desc = *desc;
@@ -614,6 +618,9 @@ static HRESULT wined3d_shader_resource_view_init(struct wined3d_shader_resource_
wined3d_resource_incref(view->resource = resource);
+#if defined(STAGING_CSMT)
+ wined3d_resource_acquire(resource);
@ -5605,7 +5605,7 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
wined3d_cs_init_object(resource->device->cs, wined3d_shader_resource_view_cs_init, view);
return WINED3D_OK;
@@ -744,6 +751,10 @@ static void wined3d_unordered_access_view_cs_init(void *object)
@@ -760,6 +767,10 @@ static void wined3d_unordered_access_view_cs_init(void *object)
desc, texture, view->format);
}
}
@ -5616,8 +5616,8 @@ diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c
}
static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_access_view *view,
@@ -824,6 +835,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
}
@@ -776,6 +787,9 @@ static HRESULT wined3d_unordered_access_view_init(struct wined3d_unordered_acces
wined3d_resource_incref(view->resource = resource);
+#if defined(STAGING_CSMT)