Added patch to implement semi-stubs for D3D11 deferred context.

This commit is contained in:
Sebastian Lackner
2017-01-20 15:58:15 +01:00
parent 7257898858
commit 3c781f3862
8 changed files with 2622 additions and 66 deletions

View File

@@ -1,4 +1,4 @@
From e97cbe81aff14980505c000e09e5bc29fb0aa0a2 Mon Sep 17 00:00:00 2001
From c58075cf3d77e15bba52ea63d217f32160aa2f23 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 3 Sep 2016 02:31:55 +0200
Subject: Revert "wined3d: Send resource maps through the command stream."
@@ -11,10 +11,10 @@ This reverts commit 9f85b5f867ed5ba6fe04be54774de1dc10ff2619.
3 files changed, 1 insertion(+), 45 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index d86213b..05487e4 100644
index 252bf28ca59..3606fba1056 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -57,7 +57,6 @@ enum wined3d_cs_op
@@ -58,7 +58,6 @@ enum wined3d_cs_op
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_PRELOAD_RESOURCE,
WINED3D_CS_OP_UNLOAD_RESOURCE,
@@ -22,7 +22,7 @@ index d86213b..05487e4 100644
};
struct wined3d_cs_present
@@ -290,17 +289,6 @@ struct wined3d_cs_unload_resource
@@ -298,17 +297,6 @@ struct wined3d_cs_unload_resource
struct wined3d_resource *resource;
};
@@ -40,7 +40,7 @@ index d86213b..05487e4 100644
static void wined3d_cs_exec_present(struct wined3d_cs *cs, const void *data)
{
const struct wined3d_cs_present *op = data;
@@ -1313,35 +1301,6 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou
@@ -1350,35 +1338,6 @@ void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resou
cs->ops->submit(cs);
}
@@ -76,7 +76,7 @@ index d86213b..05487e4 100644
static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_PRESENT */ wined3d_cs_exec_present,
@@ -1375,7 +1334,6 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1413,7 +1372,6 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_PRELOAD_RESOURCE */ wined3d_cs_exec_preload_resource,
/* WINED3D_CS_OP_UNLOAD_RESOURCE */ wined3d_cs_exec_unload_resource,
@@ -85,7 +85,7 @@ index d86213b..05487e4 100644
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size)
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index 927e875..c220205 100644
index 7f64991032d..0ba346bc636 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -321,7 +321,7 @@ HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned i
@@ -96,12 +96,12 @@ index 927e875..c220205 100644
+ return resource->resource_ops->resource_sub_resource_map(resource, sub_resource_idx, map_desc, box, flags);
}
HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx)
HRESULT CDECL wined3d_resource_map_info(struct wined3d_resource *resource, unsigned int sub_resource_idx,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index ad0578b..936c3e5 100644
index ccc27af2494..9bf14e72e97 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3096,8 +3096,6 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
@@ -3205,8 +3205,6 @@ 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;
void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@@ -111,5 +111,5 @@ index ad0578b..936c3e5 100644
static inline void wined3d_cs_push_constants(struct wined3d_cs *cs, enum wined3d_push_constants p,
unsigned int start_idx, unsigned int count, const void *constants)
--
2.9.0
2.11.0

View File

@@ -1018,7 +1018,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
context = context_acquire(resource->device, NULL);
wined3d_buffer_load(buffer_from_resource(resource), context, NULL);
context_release(context);
@@ -1427,6 +1961,7 @@ static const struct wined3d_resource_ops buffer_resource_ops =
@@ -1446,6 +1980,7 @@ static const struct wined3d_resource_ops buffer_resource_ops =
buffer_resource_sub_resource_unmap,
};
@@ -1026,7 +1026,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
static GLenum buffer_type_hint_from_bind_flags(unsigned int bind_flags)
{
if (bind_flags == WINED3D_BIND_INDEX_BUFFER)
@@ -1443,12 +1978,21 @@ static GLenum buffer_type_hint_from_bind_flags(unsigned int bind_flags)
@@ -1462,12 +1997,21 @@ static GLenum buffer_type_hint_from_bind_flags(unsigned int bind_flags)
static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device *device,
UINT size, DWORD usage, enum wined3d_format_id format_id, enum wined3d_pool pool, unsigned int bind_flags,
@@ -1048,7 +1048,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
if (!size)
{
@@ -1469,6 +2013,7 @@ static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device
@@ -1488,6 +2032,7 @@ static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device
WARN("Failed to initialize resource, hr %#x.\n", hr);
return hr;
}
@@ -1056,7 +1056,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
buffer->buffer_type_hint = buffer_type_hint_from_bind_flags(bind_flags);
buffer->bind_flags = bind_flags;
buffer->locations = WINED3D_LOCATION_SYSMEM;
@@ -1476,6 +2021,13 @@ static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device
@@ -1495,6 +2040,13 @@ static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device
TRACE("buffer %p, size %#x, usage %#x, format %s, memory @ %p.\n",
buffer, buffer->resource.size, buffer->resource.usage,
debug_d3dformat(buffer->resource.format->id), buffer->resource.heap_memory);
@@ -1070,7 +1070,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
if (device->create_parms.flags & WINED3DCREATE_SOFTWARE_VERTEXPROCESSING || pool == WINED3D_POOL_MANAGED)
{
@@ -1508,6 +2060,11 @@ static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device
@@ -1527,6 +2079,11 @@ static HRESULT buffer_init(struct wined3d_buffer *buffer, struct wined3d_device
buffer->flags |= WINED3D_BUFFER_USE_BO;
}
@@ -1082,7 +1082,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
if (!(buffer->maps = HeapAlloc(GetProcessHeap(), 0, sizeof(*buffer->maps))))
{
ERR("Out of memory.\n");
@@ -1542,7 +2099,11 @@ HRESULT CDECL wined3d_buffer_create(struct wined3d_device *device, const struct
@@ -1561,7 +2118,11 @@ HRESULT CDECL wined3d_buffer_create(struct wined3d_device *device, const struct
FIXME("Ignoring access flags (pool).\n");
hr = buffer_init(object, device, desc->byte_width, desc->usage, WINED3DFMT_UNKNOWN,
@@ -1094,7 +1094,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
if (FAILED(hr))
{
WARN("Failed to initialize buffer, hr %#x.\n", hr);
@@ -1584,7 +2145,11 @@ HRESULT CDECL wined3d_buffer_create_vb(struct wined3d_device *device, UINT size,
@@ -1603,7 +2164,11 @@ HRESULT CDECL wined3d_buffer_create_vb(struct wined3d_device *device, UINT size,
}
hr = buffer_init(object, device, size, usage, WINED3DFMT_UNKNOWN,
@@ -1106,7 +1106,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
if (FAILED(hr))
{
WARN("Failed to initialize buffer, hr %#x.\n", hr);
@@ -1615,7 +2180,11 @@ HRESULT CDECL wined3d_buffer_create_ib(struct wined3d_device *device, UINT size,
@@ -1634,7 +2199,11 @@ HRESULT CDECL wined3d_buffer_create_ib(struct wined3d_device *device, UINT size,
}
hr = buffer_init(object, device, size, usage | WINED3DUSAGE_STATICDECL,
@@ -1118,7 +1118,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
parent, parent_ops);
if (FAILED(hr))
{
@@ -1629,3 +2198,12 @@ HRESULT CDECL wined3d_buffer_create_ib(struct wined3d_device *device, UINT size,
@@ -1648,3 +2217,12 @@ HRESULT CDECL wined3d_buffer_create_ib(struct wined3d_device *device, UINT size,
return WINED3D_OK;
}
@@ -5951,7 +5951,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
static DWORD wined3d_resource_sanitise_map_flags(const struct wined3d_resource *resource, DWORD flags)
{
/* Not all flags make sense together, but Windows never returns an error.
@@ -348,22 +355,31 @@ static DWORD wined3d_resource_sanitise_map_flags(const struct wined3d_resource *
@@ -348,15 +355,20 @@ static DWORD wined3d_resource_sanitise_map_flags(const struct wined3d_resource *
return flags;
}
@@ -5971,7 +5971,8 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
+#endif /* STAGING_CSMT */
}
HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx)
HRESULT CDECL wined3d_resource_map_info(struct wined3d_resource *resource, unsigned int sub_resource_idx,
@@ -371,7 +383,11 @@ HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned
{
TRACE("resource %p, sub_resource_idx %u.\n", resource, sub_resource_idx);
@@ -5983,7 +5984,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
}
void CDECL wined3d_resource_preload(struct wined3d_resource *resource)
@@ -383,7 +399,11 @@ BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource)
@@ -391,7 +407,11 @@ BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource)
p = (void **)(((ULONG_PTR)mem + align) & ~(RESOURCE_ALIGNMENT - 1)) - 1;
*p = mem;
@@ -5995,7 +5996,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
return TRUE;
}
@@ -399,6 +419,41 @@ void wined3d_resource_free_sysmem(struct wined3d_resource *resource)
@@ -407,6 +427,41 @@ void wined3d_resource_free_sysmem(struct wined3d_resource *resource)
resource->heap_memory = NULL;
}
@@ -8502,7 +8503,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
++resource->map_count;
++sub_resource->map_count;
@@ -2194,14 +2597,71 @@ static HRESULT texture_resource_sub_resource_map(struct wined3d_resource *resour
@@ -2224,14 +2627,71 @@ static HRESULT texture_resource_sub_resource_map_info(struct wined3d_resource *r
return WINED3D_OK;
}
@@ -8574,7 +8575,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
TRACE("resource %p, sub_resource_idx %u.\n", resource, sub_resource_idx);
@@ -2217,6 +2677,7 @@ static HRESULT texture_resource_sub_resource_unmap(struct wined3d_resource *reso
@@ -2247,6 +2707,7 @@ static HRESULT texture_resource_sub_resource_unmap(struct wined3d_resource *reso
return WINEDDERR_NOTLOCKED;
}
@@ -8582,7 +8583,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (device->d3d_initialized)
{
context = context_acquire(device, NULL);
@@ -2237,6 +2698,15 @@ static HRESULT texture_resource_sub_resource_unmap(struct wined3d_resource *reso
@@ -2267,6 +2728,15 @@ static HRESULT texture_resource_sub_resource_unmap(struct wined3d_resource *reso
else if (resource->format_flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL))
{
FIXME("Depth / stencil buffer locking is not implemented.\n");
@@ -8598,7 +8599,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
}
--sub_resource->map_count;
@@ -2600,11 +3070,23 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3
@@ -2631,11 +3101,23 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3
TRACE("Created surface level %u, layer %u @ %p.\n", i, j, surface);
@@ -8622,7 +8623,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
}
}
}
@@ -2760,7 +3242,9 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2791,7 +3273,9 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
struct wined3d_context *context, DWORD location)
{
struct wined3d_texture_sub_resource *sub_resource = &texture->sub_resources[sub_resource_idx];
@@ -8632,7 +8633,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
unsigned int row_pitch, slice_pitch;
TRACE("texture %p, sub_resource_idx %u, context %p, location %s.\n",
@@ -2768,6 +3252,7 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2799,6 +3283,7 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
TRACE("Current resource location %s.\n", wined3d_debug_location(sub_resource->locations));
@@ -8640,7 +8641,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if ((sub_resource->locations & location) == location)
{
TRACE("Location(s) already up to date.\n");
@@ -2781,9 +3266,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2812,9 +3297,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
return FALSE;
}
@@ -8652,7 +8653,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (sub_resource->locations & WINED3D_LOCATION_DISCARDED)
{
TRACE("Volume previously discarded, nothing to do.\n");
@@ -2792,6 +3279,7 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2823,6 +3310,7 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
goto done;
}
@@ -8660,7 +8661,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
switch (location)
{
case WINED3D_LOCATION_TEXTURE_RGB:
@@ -2807,7 +3295,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2838,7 +3326,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
}
else if (sub_resource->locations & WINED3D_LOCATION_BUFFER)
{
@@ -8672,7 +8673,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);
@@ -2853,7 +3345,11 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2884,7 +3376,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))
{
@@ -8684,7 +8685,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);
@@ -2876,7 +3372,9 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
@@ -2907,7 +3403,9 @@ static BOOL texture3d_load_location(struct wined3d_texture *texture, unsigned in
return FALSE;
}
@@ -8694,7 +8695,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
wined3d_texture_validate_location(texture, sub_resource_idx, location);
return TRUE;
@@ -3040,6 +3538,9 @@ static HRESULT volumetexture_init(struct wined3d_texture *texture, const struct
@@ -3071,6 +3569,9 @@ static HRESULT volumetexture_init(struct wined3d_texture *texture, const struct
if (wined3d_texture_use_pbo(texture, gl_info))
{
wined3d_resource_free_sysmem(&texture->resource);
@@ -8704,7 +8705,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
texture->resource.map_binding = WINED3D_LOCATION_BUFFER;
}
@@ -3390,13 +3891,47 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
@@ -3421,13 +3922,47 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
return WINED3D_OK;
}
@@ -8752,7 +8753,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);
@@ -3421,6 +3956,7 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
@@ -3452,6 +3987,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;
@@ -8760,7 +8761,7 @@ diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
if (device->d3d_initialized)
context = context_acquire(device, NULL);
@@ -3443,6 +3979,32 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
@@ -3474,6 +4010,32 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
TRACE("Returning dc %p.\n", *dc);
return hr;
@@ -8793,7 +8794,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)
@@ -3473,6 +4035,7 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
@@ -3504,6 +4066,7 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
return WINED3DERR_INVALIDCALL;
}
@@ -8801,7 +8802,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);
@@ -3481,6 +4044,9 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
@@ -3512,6 +4075,9 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
wined3d_texture_update_map_binding(texture);
if (!(texture->flags & WINED3D_TEXTURE_GET_DC_LENIENT))
texture->flags &= ~WINED3D_TEXTURE_DC_IN_USE;
@@ -9098,7 +9099,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
{
@@ -2665,7 +2756,11 @@ struct wined3d_resource
@@ -2667,7 +2758,11 @@ struct wined3d_resource
UINT depth;
UINT size;
DWORD priority;
@@ -9110,7 +9111,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct list resource_list_entry;
LONG access_count;
@@ -2712,6 +2807,9 @@ void wined3d_resource_free_sysmem(struct wined3d_resource *resource) DECLSPEC_HI
@@ -2714,6 +2809,9 @@ void wined3d_resource_free_sysmem(struct wined3d_resource *resource) DECLSPEC_HI
GLbitfield wined3d_resource_gl_map_flags(DWORD d3d_flags) DECLSPEC_HIDDEN;
GLenum wined3d_resource_gl_legacy_map_flags(DWORD d3d_flags) DECLSPEC_HIDDEN;
BOOL wined3d_resource_is_offscreen(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@@ -9120,7 +9121,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_resource_update_draw_binding(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
/* Tests show that the start address of resources is 32 byte aligned */
@@ -2773,6 +2871,9 @@ struct wined3d_texture
@@ -2775,6 +2873,9 @@ struct wined3d_texture
DWORD flags;
GLenum target;
DWORD update_map_binding;
@@ -9130,7 +9131,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
GLuint rb_multisample;
GLuint rb_resolved;
@@ -2809,7 +2910,12 @@ struct wined3d_texture
@@ -2811,7 +2912,12 @@ struct wined3d_texture
unsigned int map_count;
DWORD locations;
@@ -9143,7 +9144,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
} sub_resources[1];
};
@@ -2860,11 +2966,25 @@ void wined3d_texture_bind(struct wined3d_texture *texture,
@@ -2862,11 +2968,25 @@ void wined3d_texture_bind(struct wined3d_texture *texture,
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture,
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
@@ -9169,7 +9170,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_texture_invalidate_location(struct wined3d_texture *texture,
unsigned int sub_resource_idx, DWORD location) DECLSPEC_HIDDEN;
void wined3d_texture_load(struct wined3d_texture *texture,
@@ -2875,13 +2995,26 @@ void *wined3d_texture_map_bo_address(const struct wined3d_bo_address *data, size
@@ -2877,13 +2997,26 @@ void *wined3d_texture_map_bo_address(const struct wined3d_bo_address *data, size
const struct wined3d_gl_info *gl_info, GLenum binding, DWORD flags) DECLSPEC_HIDDEN;
BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN;
@@ -9196,7 +9197,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int sub_resource_idx,
const struct wined3d_context *context, const struct wined3d_box *box,
const struct wined3d_const_bo_address *data, unsigned int row_pitch, unsigned int slice_pitch) DECLSPEC_HIDDEN;
@@ -2986,9 +3119,17 @@ HRESULT surface_color_fill(struct wined3d_surface *s,
@@ -2988,9 +3121,17 @@ HRESULT surface_color_fill(struct wined3d_surface *s,
const RECT *rect, const struct wined3d_color *color) DECLSPEC_HIDDEN;
HRESULT wined3d_surface_create_dc(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void wined3d_surface_destroy_dc(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
@@ -9214,7 +9215,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN;
void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN;
void surface_set_compatible_renderbuffer(struct wined3d_surface *surface,
@@ -2999,6 +3140,11 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P
@@ -3001,6 +3142,11 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P
void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info,
const struct wined3d_format *format, const RECT *src_rect, UINT src_pitch, const POINT *dst_point,
BOOL srgb, const struct wined3d_const_bo_address *data) DECLSPEC_HIDDEN;
@@ -9226,7 +9227,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
@@ -3013,6 +3159,12 @@ struct wined3d_sampler
@@ -3015,6 +3161,12 @@ struct wined3d_sampler
GLuint name;
};
@@ -9239,7 +9240,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_vertex_declaration_element
{
const struct wined3d_format *format;
@@ -3108,6 +3260,7 @@ struct wined3d_stateblock
@@ -3110,6 +3262,7 @@ struct wined3d_stateblock
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
@@ -9247,7 +9248,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void state_init(struct wined3d_state *state, struct wined3d_fb_state *fb,
const struct wined3d_gl_info *gl_info, const struct wined3d_d3d_info *d3d_info,
DWORD flags) DECLSPEC_HIDDEN;
@@ -3121,54 +3274,150 @@ enum wined3d_push_constants
@@ -3123,54 +3276,150 @@ enum wined3d_push_constants
WINED3D_PUSH_CONSTANTS_PS_I,
WINED3D_PUSH_CONSTANTS_VS_B,
WINED3D_PUSH_CONSTANTS_PS_B,
@@ -9398,7 +9399,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_set_rasterizer_state(struct wined3d_cs *cs,
struct wined3d_rasterizer_state *rasterizer_state) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_render_state(struct wined3d_cs *cs,
@@ -3200,6 +3449,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, unsigned i
@@ -3202,6 +3451,7 @@ void wined3d_cs_emit_set_unordered_access_view(struct wined3d_cs *cs, unsigned i
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;
@@ -9406,7 +9407,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_unload_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
HRESULT wined3d_cs_map(struct wined3d_cs *cs, struct wined3d_resource *resource, unsigned int sub_resource_idx,
struct wined3d_map_desc *map_desc, const struct wined3d_box *box, unsigned int flags) DECLSPEC_HIDDEN;
@@ -3211,6 +3461,24 @@ static inline void wined3d_cs_push_constants(struct wined3d_cs *cs, enum wined3d
@@ -3213,6 +3463,24 @@ static inline void wined3d_cs_push_constants(struct wined3d_cs *cs, enum wined3d
{
cs->ops->push_constants(cs, p, start_idx, count, constants);
}
@@ -9431,7 +9432,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
* fixed function semantics as D3DCOLOR or FLOAT16 */
@@ -3236,13 +3504,20 @@ struct wined3d_buffer
@@ -3238,13 +3506,20 @@ struct wined3d_buffer
GLuint buffer_object;
GLenum buffer_object_usage;
GLenum buffer_type_hint;
@@ -9452,7 +9453,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_event_query *query;
/* conversion stuff */
@@ -3258,10 +3533,15 @@ static inline struct wined3d_buffer *buffer_from_resource(struct wined3d_resourc
@@ -3260,10 +3535,15 @@ static inline struct wined3d_buffer *buffer_from_resource(struct wined3d_resourc
return CONTAINING_RECORD(resource, struct wined3d_buffer, resource);
}
@@ -9468,7 +9469,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_buffer_load(struct wined3d_buffer *buffer, struct wined3d_context *context,
const struct wined3d_state *state) DECLSPEC_HIDDEN;
BYTE *wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context) DECLSPEC_HIDDEN;
@@ -3269,6 +3549,12 @@ HRESULT wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_
@@ -3271,6 +3551,12 @@ HRESULT wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_
struct wined3d_buffer *src_buffer, unsigned int src_offset, unsigned int size) DECLSPEC_HIDDEN;
HRESULT wined3d_buffer_upload_data(struct wined3d_buffer *buffer,
const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN;
@@ -9481,7 +9482,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_rendertarget_view
{
@@ -3301,9 +3587,11 @@ static inline struct wined3d_surface *wined3d_rendertarget_view_get_surface(
@@ -3303,9 +3589,11 @@ static inline struct wined3d_surface *wined3d_rendertarget_view_get_surface(
return texture->sub_resources[view->sub_resource_idx].u.surface;
}
@@ -9493,7 +9494,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_gl_view
{
GLenum target;
@@ -3345,7 +3633,12 @@ void wined3d_unordered_access_view_invalidate_location(struct wined3d_unordered_
@@ -3347,7 +3635,12 @@ void wined3d_unordered_access_view_invalidate_location(struct wined3d_unordered_
struct wined3d_swapchain_ops
{
void (*swapchain_present)(struct wined3d_swapchain *swapchain,
@@ -9506,7 +9507,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void (*swapchain_frontbuffer_updated)(struct wined3d_swapchain *swapchain);
};
@@ -3382,6 +3675,10 @@ struct wined3d_swapchain
@@ -3384,6 +3677,10 @@ struct wined3d_swapchain
void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activate) DECLSPEC_HIDDEN;
struct wined3d_context *swapchain_get_context(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;