You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against a64861fb66be722f3a93ab73152c5d477ba3bd3e.
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
From 61f54e97ae31518f00e8d5b657810cd5b3ca828f Mon Sep 17 00:00:00 2001
|
||||
From 65f4a8779955d77206459ba75b296ec0a5a6b587 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.
|
||||
|
||||
---
|
||||
dlls/wined3d/cs.c | 78 ++++++++++++++++++++++++++++++++++
|
||||
dlls/wined3d/device.c | 2 -
|
||||
dlls/wined3d/cs.c | 76 ++++++++++++++++++++++++++++++++++
|
||||
dlls/wined3d/wined3d_private.h | 1 +
|
||||
3 files changed, 79 insertions(+), 2 deletions(-)
|
||||
2 files changed, 77 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index 32ea900e27d..52bea3d6a96 100644
|
||||
index 5d9d19a85af..625caf750bf 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -427,6 +427,7 @@ struct wined3d_cs_update_sub_resource
|
||||
@@ -21,12 +20,12 @@ index 32ea900e27d..52bea3d6a96 100644
|
||||
};
|
||||
|
||||
struct wined3d_cs_add_dirty_texture_region
|
||||
@@ -2527,6 +2528,51 @@ void wined3d_device_context_emit_update_sub_resource(struct wined3d_device_conte
|
||||
@@ -2553,7 +2554,50 @@ static void wined3d_cs_update_sub_resource(struct wined3d_device_context *contex
|
||||
const void *data, unsigned int row_pitch, unsigned int slice_pitch)
|
||||
{
|
||||
struct wined3d_cs_update_sub_resource *op;
|
||||
+ size_t data_size, size;
|
||||
+
|
||||
|
||||
+ if (resource->type != WINED3D_RTYPE_BUFFER && resource->format_flags & WINED3DFMT_FLAG_BLOCKS)
|
||||
+ goto no_async;
|
||||
+
|
||||
@@ -69,11 +68,10 @@ index 32ea900e27d..52bea3d6a96 100644
|
||||
+ return;
|
||||
+
|
||||
+no_async:
|
||||
+ wined3d_resource_wait_idle(resource);
|
||||
wined3d_resource_wait_idle(resource);
|
||||
|
||||
op = wined3d_device_context_require_space(context, sizeof(*op), WINED3D_CS_QUEUE_MAP);
|
||||
op->opcode = WINED3D_CS_OP_UPDATE_SUB_RESOURCE;
|
||||
@@ -2729,6 +2775,12 @@ static void (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
@@ -2762,6 +2806,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 +84,7 @@ index 32ea900e27d..52bea3d6a96 100644
|
||||
static void *wined3d_cs_st_require_space(struct wined3d_device_context *context,
|
||||
size_t size, enum wined3d_cs_queue_id queue_id)
|
||||
{
|
||||
@@ -2786,6 +2838,7 @@ static void wined3d_cs_st_finish(struct wined3d_device_context *context, enum wi
|
||||
@@ -2819,6 +2869,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 +92,7 @@ index 32ea900e27d..52bea3d6a96 100644
|
||||
wined3d_cs_st_require_space,
|
||||
wined3d_cs_st_submit,
|
||||
wined3d_cs_st_finish,
|
||||
@@ -2821,6 +2874,19 @@ static void wined3d_cs_mt_submit(struct wined3d_device_context *context, enum wi
|
||||
@@ -2860,6 +2911,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 +112,7 @@ index 32ea900e27d..52bea3d6a96 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);
|
||||
@@ -2883,6 +2949,17 @@ static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size
|
||||
@@ -2922,6 +2986,17 @@ static void *wined3d_cs_queue_require_space(struct wined3d_cs_queue *queue, size
|
||||
return packet->data;
|
||||
}
|
||||
|
||||
@@ -132,7 +130,7 @@ index 32ea900e27d..52bea3d6a96 100644
|
||||
static void *wined3d_cs_mt_require_space(struct wined3d_device_context *context,
|
||||
size_t size, enum wined3d_cs_queue_id queue_id)
|
||||
{
|
||||
@@ -2907,6 +2984,7 @@ static void wined3d_cs_mt_finish(struct wined3d_device_context *context, enum wi
|
||||
@@ -2946,6 +3021,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 =
|
||||
{
|
||||
@@ -140,24 +138,11 @@ index 32ea900e27d..52bea3d6a96 100644
|
||||
wined3d_cs_mt_require_space,
|
||||
wined3d_cs_mt_submit,
|
||||
wined3d_cs_mt_finish,
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index b1f7568842e..36eba1fa75e 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -5146,8 +5146,6 @@ void CDECL wined3d_device_context_update_sub_resource(struct wined3d_device_cont
|
||||
return;
|
||||
}
|
||||
|
||||
- wined3d_resource_wait_idle(resource);
|
||||
-
|
||||
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 34ec814685c..03a76029b0a 100644
|
||||
index 6565b2044df..70f97446492 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -4681,6 +4681,7 @@ struct wined3d_cs_queue
|
||||
@@ -4685,6 +4685,7 @@ struct wined3d_cs_queue
|
||||
|
||||
struct wined3d_device_context_ops
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user