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 7f1623bc626d3ca2411c1a3088512d8ef461252b.
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
From ff92a7d4d6430af59d5ed8d0f33b3bf958eb8726 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Wed, 23 Jun 2021 18:19:29 -0500
|
||||
Subject: [PATCH] wined3d: Report a byte count of 1 for WINED3DFMT_UNKNOWN.
|
||||
|
||||
Allow things like wined3d_format_copy_data() to work on buffers.
|
||||
|
||||
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
---
|
||||
dlls/wined3d/utils.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
index 4019dd4d812..83d939e291f 100644
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -83,7 +83,7 @@ static const struct wined3d_format_channels formats[] =
|
||||
{
|
||||
/* size offset
|
||||
* format id r g b a r g b a bpp depth stencil */
|
||||
- {WINED3DFMT_UNKNOWN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
+ {WINED3DFMT_UNKNOWN, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
|
||||
/* FourCC formats */
|
||||
{WINED3DFMT_UYVY, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0},
|
||||
{WINED3DFMT_YUY2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0},
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@@ -1,114 +0,0 @@
|
||||
From fbb780271175048fb723ec19a9a6c24d0b6dcf81 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Thu, 17 Jun 2021 21:56:24 -0500
|
||||
Subject: [PATCH] wined3d: Use wined3d_buffer_copy_bo_address() in
|
||||
wined3d_cs_exec_update_sub_resource().
|
||||
|
||||
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
---
|
||||
dlls/wined3d/buffer.c | 21 +--------------------
|
||||
dlls/wined3d/cs.c | 15 ++++-----------
|
||||
dlls/wined3d/wined3d_private.h | 4 ++--
|
||||
3 files changed, 7 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
|
||||
index 00d219a49f2..7fc150878f0 100644
|
||||
--- a/dlls/wined3d/buffer.c
|
||||
+++ b/dlls/wined3d/buffer.c
|
||||
@@ -108,7 +108,7 @@ static void wined3d_buffer_validate_location(struct wined3d_buffer *buffer, DWOR
|
||||
TRACE("New locations flags are %s.\n", wined3d_debug_location(buffer->locations));
|
||||
}
|
||||
|
||||
-static void wined3d_buffer_invalidate_range(struct wined3d_buffer *buffer, DWORD location,
|
||||
+void wined3d_buffer_invalidate_range(struct wined3d_buffer *buffer, DWORD location,
|
||||
unsigned int offset, unsigned int size)
|
||||
{
|
||||
TRACE("buffer %p, location %s, offset %u, size %u.\n",
|
||||
@@ -1054,25 +1054,6 @@ void wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_off
|
||||
context_release(context);
|
||||
}
|
||||
|
||||
-void wined3d_buffer_upload_data(struct wined3d_buffer *buffer, struct wined3d_context *context,
|
||||
- const struct wined3d_box *box, const void *data)
|
||||
-{
|
||||
- struct wined3d_range range;
|
||||
-
|
||||
- if (box)
|
||||
- {
|
||||
- range.offset = box->left;
|
||||
- range.size = box->right - box->left;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- range.offset = 0;
|
||||
- range.size = buffer->resource.size;
|
||||
- }
|
||||
-
|
||||
- buffer->buffer_ops->buffer_upload_ranges(buffer, context, data, range.offset, 1, &range);
|
||||
-}
|
||||
-
|
||||
static void wined3d_buffer_init_data(struct wined3d_buffer *buffer,
|
||||
struct wined3d_device *device, const struct wined3d_sub_resource_data *data)
|
||||
{
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index 4adfa18f5f7..022c0acbd0a 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -2613,18 +2613,14 @@ static void wined3d_cs_exec_update_sub_resource(struct wined3d_cs *cs, const voi
|
||||
|
||||
context = context_acquire(cs->c.device, NULL, 0);
|
||||
|
||||
+ addr.buffer_object = 0;
|
||||
+ addr.addr = op->data.data;
|
||||
+
|
||||
if (resource->type == WINED3D_RTYPE_BUFFER)
|
||||
{
|
||||
struct wined3d_buffer *buffer = buffer_from_resource(resource);
|
||||
|
||||
- if (!wined3d_buffer_load_location(buffer, context, WINED3D_LOCATION_BUFFER))
|
||||
- {
|
||||
- ERR("Failed to load buffer location.\n");
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
- wined3d_buffer_upload_data(buffer, context, box, op->data.data);
|
||||
- wined3d_buffer_invalidate_location(buffer, ~WINED3D_LOCATION_BUFFER);
|
||||
+ wined3d_buffer_copy_bo_address(buffer, context, box->left, &addr, box->right - box->left);
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -2635,9 +2631,6 @@ static void wined3d_cs_exec_update_sub_resource(struct wined3d_cs *cs, const voi
|
||||
height = wined3d_texture_get_level_height(texture, level);
|
||||
depth = wined3d_texture_get_level_depth(texture, level);
|
||||
|
||||
- addr.buffer_object = 0;
|
||||
- addr.addr = op->data.data;
|
||||
-
|
||||
/* Only load the sub-resource for partial updates. */
|
||||
if (!box->left && !box->top && !box->front
|
||||
&& box->right == width && box->bottom == height && box->back == depth)
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index 6700302b481..87c83d555e4 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -4919,6 +4919,8 @@ void wined3d_buffer_copy_bo_address(struct wined3d_buffer *dst_buffer, struct wi
|
||||
DWORD wined3d_buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_context *context,
|
||||
struct wined3d_bo_address *data) DECLSPEC_HIDDEN;
|
||||
void wined3d_buffer_invalidate_location(struct wined3d_buffer *buffer, DWORD location) DECLSPEC_HIDDEN;
|
||||
+void wined3d_buffer_invalidate_range(struct wined3d_buffer *buffer, DWORD location,
|
||||
+ unsigned int offset, unsigned int size) DECLSPEC_HIDDEN;
|
||||
void wined3d_buffer_load(struct wined3d_buffer *buffer, struct wined3d_context *context,
|
||||
const struct wined3d_state *state) DECLSPEC_HIDDEN;
|
||||
BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer,
|
||||
@@ -4926,8 +4928,6 @@ BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer,
|
||||
BYTE *wined3d_buffer_load_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context) DECLSPEC_HIDDEN;
|
||||
BOOL wined3d_buffer_prepare_location(struct wined3d_buffer *buffer,
|
||||
struct wined3d_context *context, unsigned int location) DECLSPEC_HIDDEN;
|
||||
-void wined3d_buffer_upload_data(struct wined3d_buffer *buffer, struct wined3d_context *context,
|
||||
- const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN;
|
||||
|
||||
HRESULT wined3d_buffer_no3d_init(struct wined3d_buffer *buffer_no3d, struct wined3d_device *device,
|
||||
const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data,
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
From 5188d3e4779ee56dc8d7a9b07074095a41a4331b Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Thu, 17 Jun 2021 22:14:58 -0500
|
||||
Subject: [PATCH] wined3d: Pass a wined3d_const_bo_address to
|
||||
wined3d_cs_exec_update_sub_resource().
|
||||
|
||||
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
---
|
||||
dlls/wined3d/cs.c | 20 +++++++++-----------
|
||||
1 file changed, 9 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index 022c0acbd0a..47bc36d4cc0 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -489,7 +489,8 @@ struct wined3d_cs_update_sub_resource
|
||||
struct wined3d_resource *resource;
|
||||
unsigned int sub_resource_idx;
|
||||
struct wined3d_box box;
|
||||
- struct wined3d_sub_resource_data data;
|
||||
+ struct wined3d_const_bo_address addr;
|
||||
+ unsigned int row_pitch, slice_pitch;
|
||||
};
|
||||
|
||||
struct wined3d_cs_add_dirty_texture_region
|
||||
@@ -2606,21 +2607,17 @@ static void wined3d_cs_exec_update_sub_resource(struct wined3d_cs *cs, const voi
|
||||
struct wined3d_resource *resource = op->resource;
|
||||
const struct wined3d_box *box = &op->box;
|
||||
unsigned int width, height, depth, level;
|
||||
- struct wined3d_const_bo_address addr;
|
||||
struct wined3d_context *context;
|
||||
struct wined3d_texture *texture;
|
||||
struct wined3d_box src_box;
|
||||
|
||||
context = context_acquire(cs->c.device, NULL, 0);
|
||||
|
||||
- addr.buffer_object = 0;
|
||||
- addr.addr = op->data.data;
|
||||
-
|
||||
if (resource->type == WINED3D_RTYPE_BUFFER)
|
||||
{
|
||||
struct wined3d_buffer *buffer = buffer_from_resource(resource);
|
||||
|
||||
- wined3d_buffer_copy_bo_address(buffer, context, box->left, &addr, box->right - box->left);
|
||||
+ wined3d_buffer_copy_bo_address(buffer, context, box->left, &op->addr, box->right - box->left);
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -2639,8 +2636,8 @@ static void wined3d_cs_exec_update_sub_resource(struct wined3d_cs *cs, const voi
|
||||
wined3d_texture_load_location(texture, op->sub_resource_idx, context, WINED3D_LOCATION_TEXTURE_RGB);
|
||||
|
||||
wined3d_box_set(&src_box, 0, 0, box->right - box->left, box->bottom - box->top, 0, box->back - box->front);
|
||||
- texture->texture_ops->texture_upload_data(context, &addr, texture->resource.format, &src_box,
|
||||
- op->data.row_pitch, op->data.slice_pitch, texture, op->sub_resource_idx,
|
||||
+ texture->texture_ops->texture_upload_data(context, &op->addr, texture->resource.format, &src_box,
|
||||
+ op->row_pitch, op->slice_pitch, texture, op->sub_resource_idx,
|
||||
WINED3D_LOCATION_TEXTURE_RGB, box->left, box->top, box->front);
|
||||
|
||||
wined3d_texture_validate_location(texture, op->sub_resource_idx, WINED3D_LOCATION_TEXTURE_RGB);
|
||||
@@ -2665,9 +2662,10 @@ static void wined3d_cs_update_sub_resource(struct wined3d_device_context *contex
|
||||
op->resource = resource;
|
||||
op->sub_resource_idx = sub_resource_idx;
|
||||
op->box = *box;
|
||||
- op->data.row_pitch = row_pitch;
|
||||
- op->data.slice_pitch = slice_pitch;
|
||||
- op->data.data = data;
|
||||
+ op->addr.buffer_object = 0;
|
||||
+ op->addr.addr = data;
|
||||
+ op->row_pitch = row_pitch;
|
||||
+ op->slice_pitch = slice_pitch;
|
||||
|
||||
wined3d_device_context_acquire_resource(context, resource);
|
||||
|
||||
--
|
||||
2.30.2
|
||||
|
||||
Reference in New Issue
Block a user