Rebase against 7f1623bc626d3ca2411c1a3088512d8ef461252b.

This commit is contained in:
Zebediah Figura
2021-06-29 18:39:35 -05:00
parent 1a3b158f0b
commit 260734214e
8 changed files with 3 additions and 435 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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