Zebediah Figura : tests/shader_runner: Use the common resource_readback structure in d3d9 and d3d11 readback structures.
Alexandre Julliard
julliard at winehq.org
Tue May 31 15:45:42 CDT 2022
Module: vkd3d
Branch: master
Commit: ccdb702d5387685521fb4ac395155957fa39e7f5
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=ccdb702d5387685521fb4ac395155957fa39e7f5
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Tue May 17 15:45:38 2022 +0200
tests/shader_runner: Use the common resource_readback structure in d3d9 and d3d11 readback structures.
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tests/d3d12_test_utils.h | 9 ---------
tests/shader_runner_d3d11.c | 23 +++++++++++++++--------
tests/shader_runner_d3d9.c | 23 +++++++++++++++--------
tests/utils.h | 10 ++++++++++
4 files changed, 40 insertions(+), 25 deletions(-)
diff --git a/tests/d3d12_test_utils.h b/tests/d3d12_test_utils.h
index 061931c2..d8220409 100644
--- a/tests/d3d12_test_utils.h
+++ b/tests/d3d12_test_utils.h
@@ -411,15 +411,6 @@ static inline unsigned int format_block_height(DXGI_FORMAT format)
}
}
-struct resource_readback
-{
- uint64_t width;
- unsigned int height;
- unsigned int depth;
- uint64_t row_pitch;
- void *data;
-};
-
struct d3d12_resource_readback
{
struct resource_readback rb;
diff --git a/tests/shader_runner_d3d11.c b/tests/shader_runner_d3d11.c
index 9d1ed09b..c8304ce6 100644
--- a/tests/shader_runner_d3d11.c
+++ b/tests/shader_runner_d3d11.c
@@ -540,15 +540,16 @@ static bool d3d11_runner_draw(struct shader_runner *r,
return true;
}
-struct resource_readback
+struct d3d11_resource_readback
{
+ struct resource_readback rb;
ID3D11Resource *resource;
- D3D11_MAPPED_SUBRESOURCE map_desc;
};
-static void init_readback(struct d3d11_shader_runner *runner, struct resource_readback *rb)
+static void init_readback(struct d3d11_shader_runner *runner, struct d3d11_resource_readback *rb)
{
D3D11_TEXTURE2D_DESC texture_desc;
+ D3D11_MAPPED_SUBRESOURCE map_desc;
HRESULT hr;
ID3D11Texture2D_GetDesc(runner->rt, &texture_desc);
@@ -560,11 +561,17 @@ static void init_readback(struct d3d11_shader_runner *runner, struct resource_re
ok(hr == S_OK, "Failed to create texture, hr %#lx.\n", hr);
ID3D11DeviceContext_CopyResource(runner->immediate_context, rb->resource, (ID3D11Resource *)runner->rt);
- hr = ID3D11DeviceContext_Map(runner->immediate_context, rb->resource, 0, D3D11_MAP_READ, 0, &rb->map_desc);
+ hr = ID3D11DeviceContext_Map(runner->immediate_context, rb->resource, 0, D3D11_MAP_READ, 0, &map_desc);
ok(hr == S_OK, "Failed to map texture, hr %#lx.\n", hr);
+
+ rb->rb.data = map_desc.pData;
+ rb->rb.row_pitch = map_desc.RowPitch;
+ rb->rb.width = texture_desc.Width;
+ rb->rb.height = texture_desc.Height;
+ rb->rb.depth = 1;
}
-static void release_readback(struct d3d11_shader_runner *runner, struct resource_readback *rb)
+static void release_readback(struct d3d11_shader_runner *runner, struct d3d11_resource_readback *rb)
{
ID3D11DeviceContext_Unmap(runner->immediate_context, rb->resource, 0);
ID3D11Resource_Release(rb->resource);
@@ -572,7 +579,7 @@ static void release_readback(struct d3d11_shader_runner *runner, struct resource
static const struct vec4 *get_readback_vec4(struct resource_readback *rb, unsigned int x, unsigned int y)
{
- return (struct vec4 *)((BYTE *)rb->map_desc.pData + y * rb->map_desc.RowPitch) + x;
+ return (struct vec4 *)((BYTE *)rb->data + y * rb->row_pitch) + x;
}
static void check_readback_data_vec4(struct resource_readback *rb,
@@ -603,10 +610,10 @@ static void check_readback_data_vec4(struct resource_readback *rb,
static void d3d11_runner_probe_vec4(struct shader_runner *r, const RECT *rect, const struct vec4 *v, unsigned int ulps)
{
struct d3d11_shader_runner *runner = d3d11_shader_runner(r);
- struct resource_readback rb;
+ struct d3d11_resource_readback rb;
init_readback(runner, &rb);
- check_readback_data_vec4(&rb, rect, v, ulps);
+ check_readback_data_vec4(&rb.rb, rect, v, ulps);
release_readback(runner, &rb);
}
diff --git a/tests/shader_runner_d3d9.c b/tests/shader_runner_d3d9.c
index f2875d42..14f8184a 100644
--- a/tests/shader_runner_d3d9.c
+++ b/tests/shader_runner_d3d9.c
@@ -449,14 +449,15 @@ static bool d3d9_runner_draw(struct shader_runner *r,
return true;
}
-struct resource_readback
+struct d3d9_resource_readback
{
+ struct resource_readback rb;
IDirect3DSurface9 *surface;
- D3DLOCKED_RECT rect;
};
-static void init_readback(struct d3d9_shader_runner *runner, struct resource_readback *rb)
+static void init_readback(struct d3d9_shader_runner *runner, struct d3d9_resource_readback *rb)
{
+ D3DLOCKED_RECT map_desc;
D3DSURFACE_DESC desc;
HRESULT hr;
@@ -469,13 +470,19 @@ static void init_readback(struct d3d9_shader_runner *runner, struct resource_rea
hr = IDirect3DDevice9Ex_GetRenderTargetData(runner->device, runner->rt, rb->surface);
ok(hr == D3D_OK, "Failed to get render target data, hr %#lx.\n", hr);
- hr = IDirect3DSurface9_LockRect(rb->surface, &rb->rect, NULL, D3DLOCK_READONLY);
+ hr = IDirect3DSurface9_LockRect(rb->surface, &map_desc, NULL, D3DLOCK_READONLY);
ok(hr == D3D_OK, "Failed to lock surface, hr %#lx.\n", hr);
+
+ rb->rb.data = map_desc.pBits;
+ rb->rb.row_pitch = map_desc.Pitch;
+ rb->rb.width = desc.Width;
+ rb->rb.height = desc.Height;
+ rb->rb.depth = 1;
}
static const struct vec4 *get_readback_vec4(const struct resource_readback *rb, unsigned int x, unsigned int y)
{
- return (struct vec4 *)((BYTE *)rb->rect.pBits + y * rb->rect.Pitch + x * sizeof(struct vec4));
+ return (struct vec4 *)((BYTE *)rb->data + y * rb->row_pitch + x * sizeof(struct vec4));
}
static void check_readback_data_vec4(struct resource_readback *rb,
@@ -503,7 +510,7 @@ static void check_readback_data_vec4(struct resource_readback *rb,
got.x, got.y, got.z, got.w, expected->x, expected->y, expected->z, expected->w, x, y);
}
-static void release_readback(struct resource_readback *rb)
+static void release_readback(struct d3d9_resource_readback *rb)
{
IDirect3DSurface9_UnlockRect(rb->surface);
IDirect3DSurface9_Release(rb->surface);
@@ -512,10 +519,10 @@ static void release_readback(struct resource_readback *rb)
static void d3d9_runner_probe_vec4(struct shader_runner *r, const RECT *rect, const struct vec4 *v, unsigned int ulps)
{
struct d3d9_shader_runner *runner = d3d9_shader_runner(r);
- struct resource_readback rb;
+ struct d3d9_resource_readback rb;
init_readback(runner, &rb);
- check_readback_data_vec4(&rb, rect, v, ulps);
+ check_readback_data_vec4(&rb.rb, rect, v, ulps);
release_readback(&rb);
}
diff --git a/tests/utils.h b/tests/utils.h
index 563f0b0f..2cb9511f 100644
--- a/tests/utils.h
+++ b/tests/utils.h
@@ -21,6 +21,7 @@
#include <limits.h>
#include <stdbool.h>
+#include <stdint.h>
#include <stdlib.h>
struct vec2
@@ -33,6 +34,15 @@ struct vec4
float x, y, z, w;
};
+struct resource_readback
+{
+ uint64_t width;
+ unsigned int height;
+ unsigned int depth;
+ uint64_t row_pitch;
+ void *data;
+};
+
static inline bool vkd3d_array_reserve(void **elements, size_t *capacity, size_t element_count, size_t element_size)
{
size_t new_capacity, max_capacity;
More information about the wine-cvs
mailing list