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 bf7b21ec7b587215385c210e695cfa42e19efe4c
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 0ed0c12e87f00bccb97021f0979615a492fdd373 Mon Sep 17 00:00:00 2001
|
||||
From d84576e65c6081602d34b673403ec41b3f12aaf7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 23 Aug 2016 22:54:14 +0200
|
||||
Subject: [PATCH] wined3d: Create dummy 1d textures.
|
||||
@@ -10,10 +10,10 @@ Subject: [PATCH] wined3d: Create dummy 1d textures.
|
||||
3 files changed, 31 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
|
||||
index 4929b84..c63bf85 100644
|
||||
index 34102c7..f562849 100644
|
||||
--- a/dlls/wined3d/context.c
|
||||
+++ b/dlls/wined3d/context.c
|
||||
@@ -1728,6 +1728,7 @@ void context_bind_dummy_textures(const struct wined3d_device *device, const stru
|
||||
@@ -1754,6 +1754,7 @@ void context_bind_dummy_textures(const struct wined3d_device *device, const stru
|
||||
{
|
||||
GL_EXTCALL(glActiveTexture(GL_TEXTURE0 + i));
|
||||
|
||||
@@ -21,7 +21,7 @@ index 4929b84..c63bf85 100644
|
||||
gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D, textures->tex_2d);
|
||||
|
||||
if (gl_info->supported[ARB_TEXTURE_RECTANGLE])
|
||||
@@ -1743,8 +1744,10 @@ void context_bind_dummy_textures(const struct wined3d_device *device, const stru
|
||||
@@ -1769,8 +1770,10 @@ void context_bind_dummy_textures(const struct wined3d_device *device, const stru
|
||||
gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, textures->tex_cube_array);
|
||||
|
||||
if (gl_info->supported[EXT_TEXTURE_ARRAY])
|
||||
@@ -33,7 +33,7 @@ index 4929b84..c63bf85 100644
|
||||
if (gl_info->supported[ARB_TEXTURE_BUFFER_OBJECT])
|
||||
gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_BUFFER, textures->tex_buffer);
|
||||
|
||||
@@ -2727,6 +2730,14 @@ void context_bind_texture(struct wined3d_context *context, GLenum target, GLuint
|
||||
@@ -2512,6 +2515,14 @@ void context_bind_texture(struct wined3d_context *context, GLenum target, GLuint
|
||||
case GL_NONE:
|
||||
/* nothing to do */
|
||||
break;
|
||||
@@ -49,10 +49,10 @@ index 4929b84..c63bf85 100644
|
||||
gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D, textures->tex_2d);
|
||||
break;
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 6e275e1..1662604 100644
|
||||
index c5517f5..bdc551e 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -617,6 +617,12 @@ static void create_dummy_textures(struct wined3d_device *device, struct wined3d_
|
||||
@@ -631,6 +631,12 @@ static void create_dummy_textures(struct wined3d_device *device, struct wined3d_
|
||||
* to each texture stage when the currently set D3D texture is NULL. */
|
||||
context_active_texture(context, gl_info, 0);
|
||||
|
||||
@@ -65,7 +65,7 @@ index 6e275e1..1662604 100644
|
||||
gl_info->gl_ops.gl.p_glGenTextures(1, &textures->tex_2d);
|
||||
TRACE("Dummy 2D texture given name %u.\n", textures->tex_2d);
|
||||
gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D, textures->tex_2d);
|
||||
@@ -668,6 +674,13 @@ static void create_dummy_textures(struct wined3d_device *device, struct wined3d_
|
||||
@@ -682,6 +688,13 @@ static void create_dummy_textures(struct wined3d_device *device, struct wined3d_
|
||||
|
||||
if (gl_info->supported[EXT_TEXTURE_ARRAY])
|
||||
{
|
||||
@@ -79,7 +79,7 @@ index 6e275e1..1662604 100644
|
||||
gl_info->gl_ops.gl.p_glGenTextures(1, &textures->tex_2d_array);
|
||||
TRACE("Dummy 2D array texture given name %u.\n", textures->tex_2d_array);
|
||||
gl_info->gl_ops.gl.p_glBindTexture(GL_TEXTURE_2D_ARRAY, textures->tex_2d_array);
|
||||
@@ -735,7 +748,10 @@ static void destroy_dummy_textures(struct wined3d_device *device, struct wined3d
|
||||
@@ -749,7 +762,10 @@ static void destroy_dummy_textures(struct wined3d_device *device, struct wined3d
|
||||
gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_buffer);
|
||||
|
||||
if (gl_info->supported[EXT_TEXTURE_ARRAY])
|
||||
@@ -90,7 +90,7 @@ index 6e275e1..1662604 100644
|
||||
|
||||
if (gl_info->supported[ARB_TEXTURE_CUBE_MAP_ARRAY])
|
||||
gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_cube_array);
|
||||
@@ -750,6 +766,7 @@ static void destroy_dummy_textures(struct wined3d_device *device, struct wined3d
|
||||
@@ -764,6 +780,7 @@ static void destroy_dummy_textures(struct wined3d_device *device, struct wined3d
|
||||
gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_rect);
|
||||
|
||||
gl_info->gl_ops.gl.p_glDeleteTextures(1, &dummy_textures->tex_2d);
|
||||
@@ -99,10 +99,10 @@ index 6e275e1..1662604 100644
|
||||
checkGLcall("delete dummy textures");
|
||||
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index b4d15c5..791e9d0 100644
|
||||
index 718ee63..91c2137 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -2863,11 +2863,13 @@ struct wined3d_state
|
||||
@@ -2868,11 +2868,13 @@ struct wined3d_state
|
||||
struct wined3d_dummy_textures
|
||||
{
|
||||
GLuint tex_2d;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From dd6ac123b2830b7b0703ae338ac334255cbd5198 Mon Sep 17 00:00:00 2001
|
||||
From 240e588c1e885e1830307a45c4b1c5b588ae689d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 23 Aug 2016 22:47:56 +0200
|
||||
Subject: [PATCH] wined3d: Add 1d texture resource type.
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] wined3d: Add 1d texture resource type.
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
index 4e1da1c..f9f250e 100644
|
||||
index a54e18e..91b05fb 100644
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -4282,6 +4282,7 @@ const char *debug_d3dresourcetype(enum wined3d_resource_type resource_type)
|
||||
@@ -4316,6 +4316,7 @@ const char *debug_d3dresourcetype(enum wined3d_resource_type resource_type)
|
||||
#define WINED3D_TO_STR(x) case x: return #x
|
||||
WINED3D_TO_STR(WINED3D_RTYPE_NONE);
|
||||
WINED3D_TO_STR(WINED3D_RTYPE_BUFFER);
|
||||
@@ -21,10 +21,10 @@ index 4e1da1c..f9f250e 100644
|
||||
WINED3D_TO_STR(WINED3D_RTYPE_TEXTURE_3D);
|
||||
#undef WINED3D_TO_STR
|
||||
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
|
||||
index b6a2ec3..4a64e67 100644
|
||||
index 2b4f274..6faa2a8 100644
|
||||
--- a/include/wine/wined3d.h
|
||||
+++ b/include/wine/wined3d.h
|
||||
@@ -680,8 +680,9 @@ enum wined3d_resource_type
|
||||
@@ -690,8 +690,9 @@ enum wined3d_resource_type
|
||||
{
|
||||
WINED3D_RTYPE_NONE = 0,
|
||||
WINED3D_RTYPE_BUFFER = 1,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 99146ea4feee6e8ce9df2e1f768ac335ab6291ad Mon Sep 17 00:00:00 2001
|
||||
From 2f71ecab17bc74a8771dcd6c0ea6ebc1f741bd01 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Aug 2016 22:19:25 +0200
|
||||
Subject: [PATCH] wined3d: Add is_power_of_two helper function.
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] wined3d: Add is_power_of_two helper function.
|
||||
1 file changed, 7 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index ebaa3b9..17d35ad 100644
|
||||
index e1f02a5..ce5c7e8 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -101,6 +101,11 @@ static DWORD wined3d_resource_access_from_location(DWORD location)
|
||||
@@ -133,6 +133,11 @@ static DWORD wined3d_resource_access_from_location(DWORD location)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ index ebaa3b9..17d35ad 100644
|
||||
static void wined3d_texture_evict_sysmem(struct wined3d_texture *texture)
|
||||
{
|
||||
struct wined3d_texture_sub_resource *sub_resource;
|
||||
@@ -1395,7 +1400,7 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT
|
||||
@@ -1558,7 +1563,7 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT
|
||||
else
|
||||
texture->target = GL_TEXTURE_2D;
|
||||
|
||||
@@ -32,7 +32,7 @@ index ebaa3b9..17d35ad 100644
|
||||
&& !gl_info->supported[ARB_TEXTURE_RECTANGLE] && !gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT])
|
||||
{
|
||||
texture->flags |= WINED3D_TEXTURE_COND_NP2_EMULATED;
|
||||
@@ -2583,18 +2588,7 @@ static HRESULT volumetexture_init(struct wined3d_texture *texture, const struct
|
||||
@@ -2716,18 +2721,7 @@ static HRESULT volumetexture_init(struct wined3d_texture *texture, const struct
|
||||
|
||||
if (!gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO])
|
||||
{
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
From 8c57d27baaddc04866fcebda9040bc1b521d1fe0 Mon Sep 17 00:00:00 2001
|
||||
From 2d29b9be9fd47ae00402151aab76fd89f37d9e81 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 19:24:47 +0200
|
||||
Subject: [PATCH] wined3d: Create dummy 1d textures and surfaces.
|
||||
|
||||
---
|
||||
dlls/wined3d/resource.c | 1 +
|
||||
dlls/wined3d/texture.c | 162 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 163 insertions(+)
|
||||
dlls/wined3d/texture.c | 167 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 168 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
index 97f7aec..f340217 100644
|
||||
@@ -21,10 +21,10 @@ index 97f7aec..f340217 100644
|
||||
{WINED3D_RTYPE_TEXTURE_2D, 0, WINED3D_GL_RES_TYPE_TEX_RECT},
|
||||
{WINED3D_RTYPE_TEXTURE_2D, 0, WINED3D_GL_RES_TYPE_RB},
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 6323f87..2371df9 100644
|
||||
index ce5c7e8..5685acc 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1776,6 +1776,45 @@ void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int s
|
||||
@@ -1801,6 +1801,40 @@ void wined3d_texture_upload_data(struct wined3d_texture *texture, unsigned int s
|
||||
context, box, data, row_pitch, slice_pitch);
|
||||
}
|
||||
|
||||
@@ -55,22 +55,17 @@ index 6323f87..2371df9 100644
|
||||
+ FIXME("stub.\n");
|
||||
+}
|
||||
+
|
||||
+static void texture1d_cleanup_sub_resources(struct wined3d_texture *texture)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static const struct wined3d_texture_ops texture1d_ops =
|
||||
+{
|
||||
+ texture1d_upload_data,
|
||||
+ texture1d_load_location,
|
||||
+ texture1d_prepare_texture,
|
||||
+ texture1d_cleanup_sub_resources,
|
||||
+ texture1d_prepare_texture
|
||||
+};
|
||||
+
|
||||
static void texture2d_upload_data(struct wined3d_texture *texture, unsigned int sub_resource_idx,
|
||||
const struct wined3d_context *context, const struct wined3d_box *box,
|
||||
const struct wined3d_const_bo_address *data, unsigned int row_pitch, unsigned int slice_pitch)
|
||||
@@ -2182,6 +2221,125 @@ static const struct wined3d_resource_ops texture_resource_ops =
|
||||
@@ -2178,6 +2212,135 @@ static const struct wined3d_resource_ops texture_resource_ops =
|
||||
texture_resource_sub_resource_unmap,
|
||||
};
|
||||
|
||||
@@ -80,8 +75,7 @@ index 6323f87..2371df9 100644
|
||||
+{
|
||||
+ struct wined3d_device_parent *device_parent = device->device_parent;
|
||||
+ const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
|
||||
+ struct wined3d_surface *surfaces;
|
||||
+ unsigned int i, j;
|
||||
+ unsigned int sub_count, i;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ if (layer_count > 1 && !gl_info->supported[EXT_TEXTURE_ARRAY])
|
||||
@@ -153,40 +147,51 @@ index 6323f87..2371df9 100644
|
||||
+ texture->resource.map_binding = WINED3D_LOCATION_BUFFER;
|
||||
+ }
|
||||
+
|
||||
+ if (level_count > ~(SIZE_T)0 / layer_count
|
||||
+ || !(surfaces = heap_calloc(level_count * layer_count, sizeof(*surfaces))))
|
||||
+ sub_count = level_count * layer_count;
|
||||
+ if (sub_count / layer_count != level_count)
|
||||
+ {
|
||||
+ wined3d_texture_cleanup_sync(texture);
|
||||
+ return E_OUTOFMEMORY;
|
||||
+ }
|
||||
+
|
||||
+ /* Generate all the surfaces. */
|
||||
+ for (i = 0; i < texture->level_count; ++i)
|
||||
+ /* Generate all sub-resources. */
|
||||
+ for (i = 0; i < sub_count; ++i)
|
||||
+ {
|
||||
+ for (j = 0; j < texture->layer_count; ++j)
|
||||
+ struct wined3d_texture_sub_resource *sub_resource;
|
||||
+
|
||||
+ sub_resource = &texture->sub_resources[i];
|
||||
+ sub_resource->locations = WINED3D_LOCATION_DISCARDED;
|
||||
+ if (!(texture->resource.usage & WINED3DUSAGE_DEPTHSTENCIL))
|
||||
+ {
|
||||
+ struct wined3d_texture_sub_resource *sub_resource;
|
||||
+ unsigned int idx = j * texture->level_count + i;
|
||||
+ struct wined3d_surface *surface;
|
||||
+ wined3d_texture_validate_location(texture, i, WINED3D_LOCATION_SYSMEM);
|
||||
+ wined3d_texture_invalidate_location(texture, i, ~WINED3D_LOCATION_SYSMEM);
|
||||
+ }
|
||||
+
|
||||
+ surface = &surfaces[idx];
|
||||
+ if (FAILED(hr = device_parent->ops->surface_created(device_parent,
|
||||
+ texture, i, &sub_resource->parent, &sub_resource->parent_ops)))
|
||||
+ {
|
||||
+ WARN("Failed to create sub-resource parent, hr %#x.\n", hr);
|
||||
+ sub_resource->parent = NULL;
|
||||
+ wined3d_texture_cleanup_sync(texture);
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
+ sub_resource = &texture->sub_resources[idx];
|
||||
+ sub_resource->locations = WINED3D_LOCATION_DISCARDED;
|
||||
+ sub_resource->u.surface = surface;
|
||||
+ TRACE("parent %p, parent_ops %p.\n", sub_resource->parent, sub_resource->parent_ops);
|
||||
+
|
||||
+ if (FAILED(hr = device_parent->ops->surface_created(device_parent,
|
||||
+ texture, idx, &sub_resource->parent, &sub_resource->parent_ops)))
|
||||
+ TRACE("Created sub-resource %u (level %u, layer %u).\n",
|
||||
+ i, i % texture->level_count, i / texture->level_count);
|
||||
+
|
||||
+ if ((desc->usage & WINED3DUSAGE_OWNDC) || (device->wined3d->flags & WINED3D_NO3D))
|
||||
+ {
|
||||
+ struct wined3d_texture_idx texture_idx = {texture, i};
|
||||
+
|
||||
+ wined3d_cs_init_object(device->cs, wined3d_texture_create_dc, &texture_idx);
|
||||
+ device->cs->ops->finish(device->cs, WINED3D_CS_QUEUE_DEFAULT);
|
||||
+ if (!texture->dc_info || !texture->dc_info[i].dc)
|
||||
+ {
|
||||
+ WARN("Failed to create texture1d parent, hr %#x.\n", hr);
|
||||
+ sub_resource->parent = NULL;
|
||||
+ wined3d_texture_cleanup_sync(texture);
|
||||
+ return hr;
|
||||
+ return WINED3DERR_INVALIDCALL;
|
||||
+ }
|
||||
+
|
||||
+ TRACE("parent %p, parent_ops %p.\n", parent, parent_ops);
|
||||
+
|
||||
+ TRACE("Created 1d texture surface level %u, layer %u @ %p.\n", i, j, surface);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@@ -196,7 +201,7 @@ index 6323f87..2371df9 100644
|
||||
static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3d_resource_desc *desc,
|
||||
unsigned int layer_count, unsigned int level_count, DWORD flags, struct wined3d_device *device,
|
||||
void *parent, const struct wined3d_parent_ops *parent_ops)
|
||||
@@ -3089,6 +3247,10 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
|
||||
@@ -3075,6 +3238,10 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
|
||||
|
||||
switch (desc->resource_type)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 678e1311567041e679e9cd56e22eb2345cca62b9 Mon Sep 17 00:00:00 2001
|
||||
From 47673255ab05a81d7fd5e917d7ffc749c269af29 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Aug 2016 22:22:26 +0200
|
||||
Subject: [PATCH] wined3d: Implement preparation for 1d textures.
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] wined3d: Implement preparation for 1d textures.
|
||||
1 file changed, 57 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index e901c32..5472aea 100644
|
||||
index 5685acc..718c939 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1800,7 +1800,63 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -1825,7 +1825,63 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
|
||||
static void texture1d_prepare_texture(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb)
|
||||
{
|
||||
@@ -75,7 +75,7 @@ index e901c32..5472aea 100644
|
||||
+ }
|
||||
}
|
||||
|
||||
static void texture1d_cleanup_sub_resources(struct wined3d_texture *texture)
|
||||
static const struct wined3d_texture_ops texture1d_ops =
|
||||
--
|
||||
2.7.4
|
||||
1.9.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 4675a6d20ed96591a5f0bcbf3c6e5330aa057102 Mon Sep 17 00:00:00 2001
|
||||
From d0d4a459ee524b4c91fa4591386f7f5e7af8a3dc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Aug 2016 22:25:20 +0200
|
||||
Subject: [PATCH] wined3d: Implement uploading for 1d textures.
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] wined3d: Implement uploading for 1d textures.
|
||||
2 files changed, 71 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 2962aa1..0177488 100644
|
||||
index bdc551e..bb61f78 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -4263,7 +4263,8 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
|
||||
@@ -4272,7 +4272,8 @@ void CDECL wined3d_device_update_sub_resource(struct wined3d_device *device, str
|
||||
height = 1;
|
||||
depth = 1;
|
||||
}
|
||||
@@ -23,10 +23,10 @@ index 2962aa1..0177488 100644
|
||||
struct wined3d_texture *texture = texture_from_resource(resource);
|
||||
unsigned int level;
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 5472aea..4ccf3d6 100644
|
||||
index 718c939..c19849f 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1784,8 +1784,76 @@ static void texture1d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
@@ -1809,8 +1809,76 @@ static void texture1d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
const struct wined3d_context *context, const struct wined3d_box *box, const struct wined3d_const_bo_address *data,
|
||||
unsigned int row_pitch, unsigned int slice_pitch)
|
||||
{
|
||||
@@ -105,5 +105,5 @@ index 5472aea..4ccf3d6 100644
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
--
|
||||
2.7.4
|
||||
1.9.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From d226965d4526ead5b70a3476f81d03df1088fb36 Mon Sep 17 00:00:00 2001
|
||||
From 001138256720603e42416e17d89f23b871857624 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Aug 2016 22:38:47 +0200
|
||||
Subject: [PATCH] wined3d: Implement loading from system memory and buffers to
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] wined3d: Implement loading from system memory and buffers to
|
||||
1 file changed, 67 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index 63658a8..82ba0d4 100644
|
||||
index c19849f..40ce11b 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1720,10 +1720,75 @@ static void texture1d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
@@ -1885,10 +1885,75 @@ static void texture1d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 7413752707a47be44e0aa11c670b5f7993ac8b91 Mon Sep 17 00:00:00 2001
|
||||
From be0950f4dc83719ea9cbe322abb7affc327e1ef2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Aug 2016 22:41:05 +0200
|
||||
Subject: [PATCH] wined3d: Implement downloading from (s)rgb 1d textures to
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] wined3d: Implement downloading from (s)rgb 1d textures to
|
||||
1 file changed, 114 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index af97b38..7018343 100644
|
||||
index 40ce11b..81a638e 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1857,6 +1857,78 @@ static void texture1d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
@@ -1882,6 +1882,78 @@ static void texture1d_upload_data(struct wined3d_texture *texture, unsigned int
|
||||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
@@ -91,7 +91,7 @@ index af97b38..7018343 100644
|
||||
static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
@@ -1919,6 +1991,48 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -1944,6 +2016,48 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -141,5 +141,5 @@ index af97b38..7018343 100644
|
||||
FIXME("Implement %s loading from %s.\n", wined3d_debug_location(location),
|
||||
wined3d_debug_location(sub_resource->locations));
|
||||
--
|
||||
2.7.4
|
||||
1.9.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From fe88c78871cdb3083479309e343ada20c081c949 Mon Sep 17 00:00:00 2001
|
||||
From 183c39dd55a004946a788d352a29940e9b737d0c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 27 Aug 2016 22:44:14 +0200
|
||||
Subject: [PATCH] wined3d: Implement converting between (s)rgb 1d textures.
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] wined3d: Implement converting between (s)rgb 1d textures.
|
||||
1 file changed, 31 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index da0e7d3a..f986bd9 100644
|
||||
index 81a638e..0755d4d 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1789,6 +1789,29 @@ static void texture1d_download_data(struct wined3d_texture *texture, unsigned in
|
||||
@@ -1954,6 +1954,29 @@ static void texture1d_download_data(struct wined3d_texture *texture, unsigned in
|
||||
}
|
||||
|
||||
/* Context activation is done by the caller. */
|
||||
@@ -41,7 +41,7 @@ index da0e7d3a..f986bd9 100644
|
||||
static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
@@ -1844,6 +1867,14 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
@@ -2009,6 +2032,14 @@ static BOOL texture1d_load_location(struct wined3d_texture *texture, unsigned in
|
||||
wined3d_texture_get_pitch(texture, sub_resource_idx, &row_pitch, &slice_pitch);
|
||||
texture1d_upload_data(texture, sub_resource_idx, context, NULL, &data, row_pitch, slice_pitch);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 3ab3d061ccb4521175d982766e7d6f984517b13a Mon Sep 17 00:00:00 2001
|
||||
From db22fe4ed60b15384e0f6ede1a5cb3b42bdca50f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 19:11:03 +0200
|
||||
Subject: [PATCH] wined3d: Check for 1d textures in
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] wined3d: Check for 1d textures in
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
|
||||
index f986bd9..80609a9 100644
|
||||
index 0755d4d..6504774 100644
|
||||
--- a/dlls/wined3d/texture.c
|
||||
+++ b/dlls/wined3d/texture.c
|
||||
@@ -1345,6 +1345,12 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT
|
||||
@@ -1507,6 +1507,12 @@ HRESULT CDECL wined3d_texture_update_desc(struct wined3d_texture *texture, UINT
|
||||
return WINED3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 4c2f1287c53d2b92762b1d0d88ded6690463c230 Mon Sep 17 00:00:00 2001
|
||||
From d7fe15c919f116112f85a75b799c3617d13ec8fe Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 17:00:12 +0200
|
||||
Subject: [PATCH] wined3d: Check if 1d teture is still in use before releasing.
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] wined3d: Check if 1d teture is still in use before releasing.
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 352d2e7..566a8ce 100644
|
||||
index bb61f78..3478f3e 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -5087,6 +5087,7 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso
|
||||
@@ -5088,6 +5088,7 @@ void device_resource_released(struct wined3d_device *device, struct wined3d_reso
|
||||
|
||||
switch (type)
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 148c22cfce1970d732b2b90d6d6a9018d62c4d68 Mon Sep 17 00:00:00 2001
|
||||
From 246b0e8add4f2e928aafe76345b2a11a8dc0f0b2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 17:06:41 +0200
|
||||
Subject: [PATCH] wined3d: Generate glsl samplers for 1d texture arrays.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From c6c0dbc1741ba6bde31c13b7a0a4a73b1ce26ff9 Mon Sep 17 00:00:00 2001
|
||||
From 025959d7dc3e7476cb1605d7713f6b0c6adafd0a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 19:09:41 +0200
|
||||
Subject: [PATCH] wined3d: Add support for 1d textures in
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] wined3d: Add support for 1d textures in
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
|
||||
index c63bf85..341c342 100644
|
||||
index f562849..2346249 100644
|
||||
--- a/dlls/wined3d/context.c
|
||||
+++ b/dlls/wined3d/context.c
|
||||
@@ -139,7 +139,8 @@ static void context_attach_gl_texture_fbo(struct wined3d_context *context,
|
||||
@@ -144,7 +144,8 @@ static void context_attach_gl_texture_fbo(struct wined3d_context *context,
|
||||
gl_info->fbo_ops.glFramebufferTexture(fbo_target, attachment,
|
||||
resource->object, resource->level);
|
||||
}
|
||||
@@ -22,7 +22,7 @@ index c63bf85..341c342 100644
|
||||
{
|
||||
if (!gl_info->fbo_ops.glFramebufferTextureLayer)
|
||||
{
|
||||
@@ -150,6 +151,12 @@ static void context_attach_gl_texture_fbo(struct wined3d_context *context,
|
||||
@@ -155,6 +156,12 @@ static void context_attach_gl_texture_fbo(struct wined3d_context *context,
|
||||
gl_info->fbo_ops.glFramebufferTextureLayer(fbo_target, attachment,
|
||||
resource->object, resource->level, resource->layer);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 667d34bbb3fecba08bf753e0b01c7a3e9d37ef96 Mon Sep 17 00:00:00 2001
|
||||
From 617e43bafc3bf0bc14c3cdeb9b191933ef2a8f44 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 19:21:20 +0200
|
||||
Subject: [PATCH] wined3d: Handle 1d textures in texture_activate_dimensions.
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] wined3d: Handle 1d textures in texture_activate_dimensions.
|
||||
1 file changed, 28 insertions(+)
|
||||
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
index f9f250e..12a3407 100644
|
||||
index 91b05fb..dde4eb6 100644
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -5756,7 +5756,27 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
@@ -5790,7 +5790,27 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
{
|
||||
switch (texture->target)
|
||||
{
|
||||
@@ -39,7 +39,7 @@ index f9f250e..12a3407 100644
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_3D);
|
||||
checkGLcall("glDisable(GL_TEXTURE_3D)");
|
||||
if (gl_info->supported[ARB_TEXTURE_CUBE_MAP])
|
||||
@@ -5773,6 +5793,8 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
@@ -5807,6 +5827,8 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
checkGLcall("glEnable(GL_TEXTURE_2D)");
|
||||
break;
|
||||
case GL_TEXTURE_RECTANGLE_ARB:
|
||||
@@ -48,7 +48,7 @@ index f9f250e..12a3407 100644
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_2D);
|
||||
checkGLcall("glDisable(GL_TEXTURE_2D)");
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_3D);
|
||||
@@ -5796,12 +5818,16 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
@@ -5830,12 +5852,16 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_RECTANGLE_ARB);
|
||||
checkGLcall("glDisable(GL_TEXTURE_RECTANGLE_ARB)");
|
||||
}
|
||||
@@ -65,7 +65,7 @@ index f9f250e..12a3407 100644
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_2D);
|
||||
checkGLcall("glDisable(GL_TEXTURE_2D)");
|
||||
gl_info->gl_ops.gl.p_glDisable(GL_TEXTURE_3D);
|
||||
@@ -5818,6 +5844,8 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
@@ -5852,6 +5878,8 @@ void texture_activate_dimensions(const struct wined3d_texture *texture, const st
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 197303cb41da9b38d1bedf246cab991d8db9389c Mon Sep 17 00:00:00 2001
|
||||
From 379b72a4ddca1c84cc57a2d42668e2192305289c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 25 Aug 2016 19:26:07 +0200
|
||||
Subject: [PATCH] wined3d: Allow creation of 1d shader views.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 0a3bc7c4e66bf5d1854da1d1c06fa48498011e45 Mon Sep 17 00:00:00 2001
|
||||
From 59893987de8d756b0a6db1e5b4bd46727a20d5b6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 4 Jun 2017 22:04:39 +0200
|
||||
Subject: [PATCH] d3d11: Improve ID3D11Device_CheckFormatSupport.
|
||||
@@ -44,10 +44,10 @@ index 25308c2..1183335 100644
|
||||
WARN("Invalid format %#x.\n", format);
|
||||
*format_support = 0;
|
||||
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
|
||||
index 5a36bc2..cf94159 100644
|
||||
index 6d7fccd..82b746f 100644
|
||||
--- a/dlls/d3d11/tests/d3d11.c
|
||||
+++ b/dlls/d3d11/tests/d3d11.c
|
||||
@@ -16026,7 +16026,8 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
@@ -16037,7 +16037,8 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
|
||||
if (formats[i].fl_required <= feature_level)
|
||||
{
|
||||
@@ -57,7 +57,7 @@ index 5a36bc2..cf94159 100644
|
||||
format, feature_name, feature_level, format_support[format]);
|
||||
continue;
|
||||
}
|
||||
@@ -16039,6 +16040,9 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
@@ -16050,6 +16051,9 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ index 5a36bc2..cf94159 100644
|
||||
ok(!supported, "Format %#x - %s supported, feature level %#x, format support %#x.\n",
|
||||
format, feature_name, feature_level, format_support[format]);
|
||||
}
|
||||
@@ -16046,6 +16050,15 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
@@ -16057,6 +16061,15 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
|
||||
static void test_required_format_support(const D3D_FEATURE_LEVEL feature_level)
|
||||
{
|
||||
@@ -83,7 +83,7 @@ index 5a36bc2..cf94159 100644
|
||||
unsigned int format_support[DXGI_FORMAT_B4G4R4A4_UNORM + 1];
|
||||
struct device_desc device_desc;
|
||||
ID3D11Device *device;
|
||||
@@ -16073,6 +16086,24 @@ static void test_required_format_support(const D3D_FEATURE_LEVEL feature_level)
|
||||
@@ -16084,6 +16097,24 @@ static void test_required_format_support(const D3D_FEATURE_LEVEL feature_level)
|
||||
ok(hr == E_FAIL, "Got unexpected hr %#x.\n", hr);
|
||||
ok(!support, "Got unexpected format support %#x.\n", support);
|
||||
|
||||
@@ -109,10 +109,10 @@ index 5a36bc2..cf94159 100644
|
||||
for (format = DXGI_FORMAT_UNKNOWN; format <= DXGI_FORMAT_B4G4R4A4_UNORM; ++format)
|
||||
{
|
||||
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
index f7f6452..c962146 100644
|
||||
index f18c4ac..fe4d087 100644
|
||||
--- a/dlls/wined3d/directx.c
|
||||
+++ b/dlls/wined3d/directx.c
|
||||
@@ -5314,10 +5314,23 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
|
||||
@@ -5335,10 +5335,23 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
|
||||
case WINED3D_RTYPE_NONE:
|
||||
allowed_usage = WINED3DUSAGE_DEPTHSTENCIL
|
||||
| WINED3DUSAGE_RENDERTARGET;
|
||||
@@ -137,7 +137,7 @@ index f7f6452..c962146 100644
|
||||
case WINED3D_RTYPE_TEXTURE_2D:
|
||||
allowed_usage = WINED3DUSAGE_DEPTHSTENCIL
|
||||
| WINED3DUSAGE_RENDERTARGET
|
||||
@@ -5374,6 +5387,12 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
|
||||
@@ -5395,6 +5408,12 @@ HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, UINT ad
|
||||
gl_type = gl_type_end = WINED3D_GL_RES_TYPE_TEX_3D;
|
||||
break;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 7a289a8189765f382f05e2862a082e7910d1285d Mon Sep 17 00:00:00 2001
|
||||
From 814753a96f2567b45393acd4c960ddc81f671743 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 7 Jul 2017 04:03:19 +0200
|
||||
Subject: [PATCH] d3d11: Allow DXGI_FORMAT_UNKNOWN in CheckFormatSupport and
|
||||
@@ -23,10 +23,10 @@ index 1183335..aaefb0a 100644
|
||||
WARN("Invalid format %#x.\n", format);
|
||||
*format_support = 0;
|
||||
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
|
||||
index cf94159..9ea28cc 100644
|
||||
index 82b746f..5f31ced 100644
|
||||
--- a/dlls/d3d11/tests/d3d11.c
|
||||
+++ b/dlls/d3d11/tests/d3d11.c
|
||||
@@ -16050,7 +16050,7 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
@@ -16061,7 +16061,7 @@ static void check_format_support(const unsigned int *format_support, D3D_FEATURE
|
||||
|
||||
static void test_required_format_support(const D3D_FEATURE_LEVEL feature_level)
|
||||
{
|
||||
@@ -35,7 +35,7 @@ index cf94159..9ea28cc 100644
|
||||
D3D11_FORMAT_SUPPORT_TEXTURE1D | D3D11_FORMAT_SUPPORT_TEXTURE2D |
|
||||
D3D11_FORMAT_SUPPORT_TEXTURE3D | D3D11_FORMAT_SUPPORT_TEXTURECUBE |
|
||||
D3D11_FORMAT_SUPPORT_MIP | D3D11_FORMAT_SUPPORT_MIP_AUTOGEN |
|
||||
@@ -16093,12 +16093,10 @@ static void test_required_format_support(const D3D_FEATURE_LEVEL feature_level)
|
||||
@@ -16104,12 +16104,10 @@ static void test_required_format_support(const D3D_FEATURE_LEVEL feature_level)
|
||||
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got %#x.\n", hr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user