mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against a24bdfc2c69c5648cbb3df762149b2647e209a09.
This commit is contained in:
parent
9319c38de2
commit
64ea26c0cb
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "3269da9b46eaec8e3ea263fc8ecfcd24d3d8b6e6"
|
||||
echo "a24bdfc2c69c5648cbb3df762149b2647e209a09"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a994b3627570ca44e30cbf238412159347ebb010 Mon Sep 17 00:00:00 2001
|
||||
From 61f54e97ae31518f00e8d5b657810cd5b3ca828f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 20 Feb 2017 00:27:25 +0100
|
||||
Subject: [PATCH] wined3d: Improve wined3d_cs_emit_update_sub_resource.
|
||||
@ -10,10 +10,10 @@ Subject: [PATCH] wined3d: Improve wined3d_cs_emit_update_sub_resource.
|
||||
3 files changed, 79 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index 5176c635cf5..efacf42eb12 100644
|
||||
index 32ea900e27d..52bea3d6a96 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -420,6 +420,7 @@ struct wined3d_cs_update_sub_resource
|
||||
@@ -427,6 +427,7 @@ struct wined3d_cs_update_sub_resource
|
||||
unsigned int sub_resource_idx;
|
||||
struct wined3d_box box;
|
||||
struct wined3d_sub_resource_data data;
|
||||
@ -21,8 +21,8 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
};
|
||||
|
||||
struct wined3d_cs_add_dirty_texture_region
|
||||
@@ -2481,6 +2482,51 @@ void wined3d_cs_emit_update_sub_resource(struct wined3d_cs *cs, struct wined3d_r
|
||||
unsigned int slice_pitch)
|
||||
@@ -2527,6 +2528,51 @@ void wined3d_device_context_emit_update_sub_resource(struct wined3d_device_conte
|
||||
const void *data, unsigned int row_pitch, unsigned int slice_pitch)
|
||||
{
|
||||
struct wined3d_cs_update_sub_resource *op;
|
||||
+ size_t data_size, size;
|
||||
@ -50,10 +50,10 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
+ }
|
||||
+
|
||||
+ size = FIELD_OFFSET(struct wined3d_cs_update_sub_resource, copy_data[data_size]);
|
||||
+ if (!cs->c.ops->check_space(&cs->c, size, WINED3D_CS_QUEUE_DEFAULT))
|
||||
+ if (!context->ops->check_space(context, size, WINED3D_CS_QUEUE_DEFAULT))
|
||||
+ goto no_async;
|
||||
+
|
||||
+ op = cs->c.ops->require_space(&cs->c, size, WINED3D_CS_QUEUE_DEFAULT);
|
||||
+ op = wined3d_device_context_require_space(context, size, WINED3D_CS_QUEUE_DEFAULT);
|
||||
+ op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
|
||||
+ op->resource = resource;
|
||||
+ op->sub_resource_idx = sub_resource_idx;
|
||||
@ -65,15 +65,15 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
+
|
||||
+ wined3d_resource_acquire(resource);
|
||||
+
|
||||
+ cs->c.ops->submit(&cs->c, WINED3D_CS_QUEUE_DEFAULT);
|
||||
+ wined3d_device_context_submit(context, WINED3D_CS_QUEUE_DEFAULT);
|
||||
+ return;
|
||||
+
|
||||
+no_async:
|
||||
+ wined3d_resource_wait_idle(resource);
|
||||
|
||||
op = wined3d_device_context_require_space(&cs->c, sizeof(*op), WINED3D_CS_QUEUE_MAP);
|
||||
op = wined3d_device_context_require_space(context, sizeof(*op), WINED3D_CS_QUEUE_MAP);
|
||||
op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
|
||||
@@ -2677,6 +2723,12 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
@@ -2729,6 +2775,12 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
/* WINED3D_CS_OP_GENERATE_MIPMAPS */ wined3d_cs_exec_generate_mipmaps,
|
||||
};
|
||||
|
||||
@ -86,7 +86,7 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
static void *wined3d_cs_st_require_space(struct wined3d_device_context *context,
|
||||
size_t size, enum wined3d_cs_queue_id queue_id)
|
||||
{
|
||||
@@ -2734,6 +2786,7 @@ static void wined3d_cs_st_finish(struct wined3d_device_context *context, enum wi
|
||||
@@ -2786,6 +2838,7 @@ static void wined3d_cs_st_finish(struct wined3d_device_context *context, enum wi
|
||||
|
||||
static const struct wined3d_device_context_ops wined3d_cs_st_ops =
|
||||
{
|
||||
@ -94,7 +94,7 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
wined3d_cs_st_require_space,
|
||||
wined3d_cs_st_submit,
|
||||
wined3d_cs_st_finish,
|
||||
@@ -2769,6 +2822,19 @@ static void wined3d_cs_mt_submit(struct wined3d_device_context *context, enum wi
|
||||
@@ -2821,6 +2874,19 @@ static void wined3d_cs_mt_submit(struct wined3d_device_context *context, enum wi
|
||||
wined3d_cs_queue_submit(&cs->queue[queue_id], cs);
|
||||
}
|
||||
|
||||
@ -114,7 +114,7 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size_t size, struct wined3d_cs *cs)
|
||||
{
|
||||
size_t queue_size = ARRAY_SIZE(queue->data);
|
||||
@@ -2831,6 +2897,17 @@ static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size
|
||||
@@ -2883,6 +2949,17 @@ static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size
|
||||
return packet->data;
|
||||
}
|
||||
|
||||
@ -132,7 +132,7 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
static void *wined3d_cs_mt_require_space(struct wined3d_device_context *context,
|
||||
size_t size, enum wined3d_cs_queue_id queue_id)
|
||||
{
|
||||
@@ -2855,6 +2932,7 @@ static void wined3d_cs_mt_finish(struct wined3d_device_context *context, enum wi
|
||||
@@ -2907,6 +2984,7 @@ static void wined3d_cs_mt_finish(struct wined3d_device_context *context, enum wi
|
||||
|
||||
static const struct wined3d_device_context_ops wined3d_cs_mt_ops =
|
||||
{
|
||||
@ -141,23 +141,23 @@ index 5176c635cf5..efacf42eb12 100644
|
||||
wined3d_cs_mt_submit,
|
||||
wined3d_cs_mt_finish,
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 06329293261..356f549e5c6 100644
|
||||
index b1f7568842e..36eba1fa75e 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -4972,8 +4972,6 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
|
||||
@@ -5146,8 +5146,6 @@ void CDECL wined3d_device_context_update_sub_resource(struct wined3d_device_cont
|
||||
return;
|
||||
}
|
||||
|
||||
- wined3d_resource_wait_idle(resource);
|
||||
-
|
||||
wined3d_cs_emit_update_sub_resource(device->cs, resource, sub_resource_idx, box, data, row_pitch, depth_pitch);
|
||||
wined3d_device_context_emit_update_sub_resource(context, resource,
|
||||
sub_resource_idx, box, data, row_pitch, depth_pitch);
|
||||
}
|
||||
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index ee00530981c..6881fe8e4cd 100644
|
||||
index 34ec814685c..03a76029b0a 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -4671,6 +4671,7 @@ struct wined3d_cs_queue
|
||||
@@ -4681,6 +4681,7 @@ struct wined3d_cs_queue
|
||||
|
||||
struct wined3d_device_context_ops
|
||||
{
|
||||
@ -166,5 +166,5 @@ index ee00530981c..6881fe8e4cd 100644
|
||||
void (*submit)(struct wined3d_device_context *context, enum wined3d_cs_queue_id queue_id);
|
||||
void (*finish)(struct wined3d_device_context *context, enum wined3d_cs_queue_id queue_id);
|
||||
--
|
||||
2.20.1
|
||||
2.30.2
|
||||
|
||||
|
@ -1 +1 @@
|
||||
3269da9b46eaec8e3ea263fc8ecfcd24d3d8b6e6
|
||||
a24bdfc2c69c5648cbb3df762149b2647e209a09
|
||||
|
Loading…
Reference in New Issue
Block a user