mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Rebase against 42cbc05e59d32228f4edd171ca66e4cbe5645d1d.
This commit is contained in:
parent
44a9c0cc8a
commit
995b761dee
@ -1,19 +1,19 @@
|
||||
From df8e954e44bbaa2f4631a3fc71a23609fc704e5e Mon Sep 17 00:00:00 2001
|
||||
From 063e45518bfb5b0909c763bb0da10c03ae13c6cc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 26 Feb 2015 05:28:23 +0100
|
||||
Subject: include: Declare a couple more file information class structures.
|
||||
|
||||
---
|
||||
include/winbase.h | 37 +++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 37 insertions(+)
|
||||
include/winbase.h | 23 +++++++++++++++++++++++
|
||||
1 file changed, 23 insertions(+)
|
||||
|
||||
diff --git a/include/winbase.h b/include/winbase.h
|
||||
index 4795d87..28313e3 100644
|
||||
index 823d9f4..373d0bb 100644
|
||||
--- a/include/winbase.h
|
||||
+++ b/include/winbase.h
|
||||
@@ -874,6 +874,43 @@ typedef struct _FILE_RENAME_INFO {
|
||||
WCHAR FileName[1];
|
||||
} FILE_RENAME_INFO, *PFILE_RENAME_INFO;
|
||||
@@ -905,6 +905,29 @@ typedef struct _FILE_REMOTE_PROTOCOL_INFO {
|
||||
} ProtocolSpecificReserved;
|
||||
} FILE_REMOTE_PROTOCOL_INFO, *PFILE_REMOTE_PROTOCOL_INFO;
|
||||
|
||||
+typedef struct _FILE_STREAM_INFO {
|
||||
+ DWORD NextEntryOffset;
|
||||
@ -23,20 +23,6 @@ index 4795d87..28313e3 100644
|
||||
+ WCHAR StreamName[1];
|
||||
+} FILE_STREAM_INFO, *PFILE_STREAM_INFO;
|
||||
+
|
||||
+typedef struct _FILE_COMPRESSION_INFO {
|
||||
+ LARGE_INTEGER CompressedFileSize;
|
||||
+ WORD CompressionFormat;
|
||||
+ UCHAR CompressionUnitShift;
|
||||
+ UCHAR ChunkShift;
|
||||
+ UCHAR ClusterShift;
|
||||
+ UCHAR Reserved[3];
|
||||
+} FILE_COMPRESSION_INFO, *PFILE_COMPRESSION_INFO;
|
||||
+
|
||||
+typedef struct _FILE_ATTRIBUTE_TAG_INFO {
|
||||
+ DWORD FileAttributes;
|
||||
+ DWORD ReparseTag;
|
||||
+} FILE_ATTRIBUTE_TAG_INFO, *PFILE_ATTRIBUTE_TAG_INFO;
|
||||
+
|
||||
+typedef struct _FILE_FULL_DIR_INFO {
|
||||
+ ULONG NextEntryOffset;
|
||||
+ ULONG FileIndex;
|
||||
|
@ -55,7 +55,7 @@ version()
|
||||
echo "Copyright (C) 2014-2015 the Wine Staging project authors."
|
||||
echo ""
|
||||
echo "Patchset to be applied on upstream Wine:"
|
||||
echo " commit 0922865b377913a27cea568ac688787a8117d8a7"
|
||||
echo " commit 42cbc05e59d32228f4edd171ca66e4cbe5645d1d"
|
||||
echo ""
|
||||
}
|
||||
|
||||
|
@ -1099,7 +1099,7 @@ diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -3470,7 +3470,11 @@
|
||||
@@ -3514,7 +3514,11 @@
|
||||
float y_offset = context->render_offscreen
|
||||
? (center_offset - (2.0f * y) - h) / h
|
||||
: (center_offset - (2.0f * y) - h) / -h;
|
||||
@ -1111,7 +1111,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE;
|
||||
float z_scale = zenable ? 2.0f : 0.0f;
|
||||
float z_offset = zenable ? -1.0f : 0.0f;
|
||||
@@ -3593,6 +3597,7 @@
|
||||
@@ -3637,6 +3641,7 @@
|
||||
/* case WINED3D_TTFF_COUNT1: Won't ever get here. */
|
||||
case WINED3D_TTFF_COUNT2:
|
||||
mat._13 = mat._23 = mat._33 = mat._43 = 0.0f;
|
||||
@ -1119,7 +1119,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
/* OpenGL divides the first 3 vertex coord by the 4th by default,
|
||||
* which is essentially the same as D3DTTFF_PROJECTED. Make sure that
|
||||
* the 4th coord evaluates to 1.0 to eliminate that.
|
||||
@@ -3605,6 +3610,20 @@
|
||||
@@ -3649,6 +3654,20 @@
|
||||
* A more serious problem occurs if the app passes 4 coordinates in, and the
|
||||
* 4th is != 1.0(opengl default). This would have to be fixed in draw_strided_slow
|
||||
* or a replacement shader. */
|
||||
@ -1140,7 +1140,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
default:
|
||||
mat._14 = mat._24 = mat._34 = 0.0f; mat._44 = 1.0f;
|
||||
}
|
||||
@@ -4060,7 +4079,11 @@
|
||||
@@ -4104,7 +4123,11 @@
|
||||
unsigned int i;
|
||||
DWORD ttff;
|
||||
DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2;
|
||||
@ -7779,7 +7779,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
{
|
||||
TRACE("Surface was discarded, no need copy data.\n");
|
||||
switch (location)
|
||||
@@ -3640,6 +4472,7 @@
|
||||
@@ -3643,6 +4475,7 @@
|
||||
default:
|
||||
FIXME("Unhandled location %#x\n", location);
|
||||
}
|
||||
@ -7787,7 +7787,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
surface->resource.locations &= ~WINED3D_LOCATION_DISCARDED;
|
||||
surface->resource.locations |= location;
|
||||
surface->ds_current_size.cx = surface->resource.width;
|
||||
@@ -3651,6 +4484,19 @@
|
||||
@@ -3654,6 +4487,19 @@
|
||||
{
|
||||
FIXME("No up to date depth stencil location.\n");
|
||||
surface->resource.locations |= location;
|
||||
@ -7807,7 +7807,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
surface->ds_current_size.cx = surface->resource.width;
|
||||
surface->ds_current_size.cy = surface->resource.height;
|
||||
return;
|
||||
@@ -3715,9 +4561,13 @@
|
||||
@@ -3718,9 +4564,13 @@
|
||||
|
||||
context_invalidate_state(context, STATE_FRAMEBUFFER);
|
||||
|
||||
@ -7821,7 +7821,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
}
|
||||
else if (location == WINED3D_LOCATION_DRAWABLE)
|
||||
@@ -3733,9 +4583,13 @@
|
||||
@@ -3736,9 +4586,13 @@
|
||||
|
||||
context_invalidate_state(context, STATE_FRAMEBUFFER);
|
||||
|
||||
@ -7835,7 +7835,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
gl_info->gl_ops.gl.p_glFlush(); /* Flush to ensure ordering across contexts. */
|
||||
}
|
||||
else
|
||||
@@ -3743,6 +4597,7 @@
|
||||
@@ -3746,6 +4600,7 @@
|
||||
ERR("Invalid location (%#x) specified.\n", location);
|
||||
}
|
||||
|
||||
@ -7843,7 +7843,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
surface->resource.locations |= location;
|
||||
surface->ds_current_size.cx = surface->resource.width;
|
||||
surface->ds_current_size.cy = surface->resource.height;
|
||||
@@ -3788,6 +4643,135 @@
|
||||
@@ -3791,6 +4646,135 @@
|
||||
TRACE("Surface was discarded, nothing to do.\n");
|
||||
return WINED3D_OK;
|
||||
}
|
||||
@ -7979,7 +7979,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO
|
||||
&& wined3d_resource_is_offscreen(&surface->container->resource))
|
||||
@@ -3797,6 +4781,7 @@
|
||||
@@ -3800,6 +4784,7 @@
|
||||
}
|
||||
|
||||
surface_get_rect(surface, NULL, &r);
|
||||
@ -7987,7 +7987,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
wined3d_resource_load_location(&surface->resource, context, WINED3D_LOCATION_TEXTURE_RGB);
|
||||
surface_blt_to_drawable(surface->resource.device, context,
|
||||
WINED3D_TEXF_POINT, FALSE, surface, &r, surface, &r);
|
||||
@@ -3865,6 +4850,66 @@
|
||||
@@ -3868,6 +4853,66 @@
|
||||
RECT rect = {0, 0, surface->resource.width, surface->resource.height};
|
||||
|
||||
surface_blt_fbo(device, context, WINED3D_TEXF_POINT, surface, src_location,
|
||||
@ -8054,7 +8054,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
&rect, surface, dst_location, &rect);
|
||||
|
||||
return WINED3D_OK;
|
||||
@@ -3874,6 +4919,7 @@
|
||||
@@ -3877,6 +4922,7 @@
|
||||
|
||||
if (srgb)
|
||||
{
|
||||
@ -8062,7 +8062,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
if ((surface->resource.locations & (WINED3D_LOCATION_TEXTURE_RGB | surface->resource.map_binding))
|
||||
== WINED3D_LOCATION_TEXTURE_RGB)
|
||||
{
|
||||
@@ -3902,6 +4948,39 @@
|
||||
@@ -3905,6 +4951,39 @@
|
||||
wined3d_resource_prepare_system_memory(&surface->resource);
|
||||
wined3d_resource_load_location(&surface->resource, context, WINED3D_LOCATION_SYSMEM);
|
||||
}
|
||||
@ -8102,7 +8102,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
wined3d_texture_prepare_texture(texture, context, srgb);
|
||||
wined3d_texture_bind_and_dirtify(texture, context, srgb);
|
||||
@@ -3916,7 +4995,11 @@
|
||||
@@ -3919,7 +4998,11 @@
|
||||
/* Don't use PBOs for converted surfaces. During PBO conversion we look at
|
||||
* WINED3D_TEXTURE_CONVERTED but it isn't set (yet) in all cases it is
|
||||
* getting called. */
|
||||
@ -8114,7 +8114,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
{
|
||||
TRACE("Removing the pbo attached to surface %p.\n", surface);
|
||||
|
||||
@@ -3925,6 +5008,7 @@
|
||||
@@ -3928,6 +5011,7 @@
|
||||
else
|
||||
surface->resource.map_binding = WINED3D_LOCATION_SYSMEM;
|
||||
|
||||
@ -8122,7 +8122,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
wined3d_resource_prepare_map_memory(&surface->resource, context);
|
||||
wined3d_resource_load_location(&surface->resource, context, surface->resource.map_binding);
|
||||
wined3d_resource_free_bo(&surface->resource);
|
||||
@@ -3932,6 +5016,14 @@
|
||||
@@ -3935,6 +5019,14 @@
|
||||
}
|
||||
|
||||
wined3d_resource_get_memory(&surface->resource, surface->resource.locations, &data);
|
||||
@ -8137,7 +8137,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
if (format.convert)
|
||||
{
|
||||
/* This code is entered for texture formats which need a fixup. */
|
||||
@@ -3977,6 +5069,7 @@
|
||||
@@ -3980,6 +5072,7 @@
|
||||
wined3d_surface_upload_data(surface, gl_info, &format, &src_rect,
|
||||
src_row_pitch, &dst_point, srgb, wined3d_const_bo_address(&data));
|
||||
|
||||
@ -8145,7 +8145,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
HeapFree(GetProcessHeap(), 0, mem);
|
||||
|
||||
return WINED3D_OK;
|
||||
@@ -4000,6 +5093,31 @@
|
||||
@@ -4003,6 +5096,31 @@
|
||||
struct wined3d_context *context, DWORD location)
|
||||
{
|
||||
struct wined3d_surface *surface = surface_from_resource(resource);
|
||||
@ -8177,7 +8177,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("surface %p, location %s.\n", surface, wined3d_debug_location(location));
|
||||
@@ -4007,6 +5125,7 @@
|
||||
@@ -4010,6 +5128,7 @@
|
||||
if (surface->resource.usage & WINED3DUSAGE_DEPTHSTENCIL)
|
||||
{
|
||||
if (location == WINED3D_LOCATION_TEXTURE_RGB
|
||||
@ -8185,7 +8185,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
&& surface->resource.locations & (WINED3D_LOCATION_DRAWABLE | WINED3D_LOCATION_DISCARDED))
|
||||
{
|
||||
surface_load_ds_location(surface, context, location);
|
||||
@@ -4016,21 +5135,63 @@
|
||||
@@ -4019,21 +5138,63 @@
|
||||
&& surface->container->resource.draw_binding != WINED3D_LOCATION_DRAWABLE)
|
||||
{
|
||||
/* Already up to date, nothing to do. */
|
||||
@ -8254,7 +8254,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
|
||||
switch (location)
|
||||
@@ -4039,6 +5200,7 @@
|
||||
@@ -4042,6 +5203,7 @@
|
||||
case WINED3D_LOCATION_USER_MEMORY:
|
||||
case WINED3D_LOCATION_SYSMEM:
|
||||
case WINED3D_LOCATION_BUFFER:
|
||||
@ -8262,7 +8262,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
surface_load_sysmem(surface, context, location);
|
||||
break;
|
||||
|
||||
@@ -4056,6 +5218,24 @@
|
||||
@@ -4059,6 +5221,24 @@
|
||||
if (FAILED(hr = surface_load_texture(surface, context,
|
||||
location == WINED3D_LOCATION_TEXTURE_SRGB)))
|
||||
return;
|
||||
@ -8287,7 +8287,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -4063,12 +5243,21 @@
|
||||
@@ -4066,12 +5246,21 @@
|
||||
break;
|
||||
}
|
||||
|
||||
@ -8309,7 +8309,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
|
||||
static HRESULT ffp_blit_alloc(struct wined3d_device *device) { return WINED3D_OK; }
|
||||
@@ -4176,6 +5365,7 @@
|
||||
@@ -4179,6 +5368,7 @@
|
||||
const RECT *dst_rect, const struct wined3d_color *color)
|
||||
{
|
||||
const RECT draw_rect = {0, 0, dst_surface->resource.width, dst_surface->resource.height};
|
||||
@ -8317,7 +8317,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
struct wined3d_rendertarget_view view, *view_ptr = &view;
|
||||
struct wined3d_fb_state fb = {&view_ptr, NULL, 1};
|
||||
struct wined3d_texture *texture = dst_surface->container;
|
||||
@@ -4196,6 +5386,21 @@
|
||||
@@ -4199,6 +5389,21 @@
|
||||
view.sub_resource_idx = dst_surface->texture_layer * texture->level_count + dst_surface->texture_level;
|
||||
|
||||
device_clear_render_targets(device, 1, &fb, 1, dst_rect, &draw_rect, WINED3DCLEAR_TARGET, color, 0.0f, 0);
|
||||
@ -8339,7 +8339,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
return WINED3D_OK;
|
||||
}
|
||||
@@ -4204,6 +5409,7 @@
|
||||
@@ -4207,6 +5412,7 @@
|
||||
const RECT *dst_rect, float depth)
|
||||
{
|
||||
const RECT draw_rect = {0, 0, dst_surface->resource.width, dst_surface->resource.height};
|
||||
@ -8347,7 +8347,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
struct wined3d_rendertarget_view view;
|
||||
struct wined3d_fb_state fb = {NULL, &view};
|
||||
struct wined3d_texture *texture = dst_surface->container;
|
||||
@@ -4219,6 +5425,20 @@
|
||||
@@ -4222,6 +5428,20 @@
|
||||
view.sub_resource_idx = dst_surface->texture_layer * texture->level_count + dst_surface->texture_level;
|
||||
|
||||
device_clear_render_targets(device, 0, &fb, 1, dst_rect, &draw_rect, WINED3DCLEAR_ZBUFFER, 0, depth, 0);
|
||||
@ -8368,7 +8368,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
return WINED3D_OK;
|
||||
}
|
||||
@@ -4231,6 +5451,7 @@
|
||||
@@ -4234,6 +5454,7 @@
|
||||
/* Blit from offscreen surface to render target */
|
||||
struct wined3d_color_key old_blt_key = src_surface->container->async.src_blt_color_key;
|
||||
DWORD old_color_key_flags = src_surface->container->async.color_key_flags;
|
||||
@ -8376,7 +8376,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
struct wined3d_context *context;
|
||||
|
||||
TRACE("Blt from surface %p to rendertarget %p\n", src_surface, dst_surface);
|
||||
@@ -4248,6 +5469,22 @@
|
||||
@@ -4251,6 +5472,22 @@
|
||||
|
||||
wined3d_resource_validate_location(&dst_surface->resource, dst_surface->container->resource.draw_binding);
|
||||
wined3d_resource_invalidate_location(&dst_surface->resource, ~dst_surface->container->resource.draw_binding);
|
||||
@ -8399,7 +8399,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
|
||||
const struct blit_shader ffp_blit = {
|
||||
@@ -4407,6 +5644,7 @@
|
||||
@@ -4410,6 +5647,7 @@
|
||||
const struct wined3d_format *src_format, *dst_format;
|
||||
unsigned int src_fmt_flags, dst_fmt_flags;
|
||||
struct wined3d_texture *src_texture = NULL;
|
||||
@ -8407,7 +8407,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
void *src_data = NULL, *dst_data = NULL;
|
||||
UINT src_row_pitch, src_slice_pitch, dst_row_pitch, dst_slice_pitch;
|
||||
const BYTE *sbase = NULL;
|
||||
@@ -4437,6 +5675,23 @@
|
||||
@@ -4440,6 +5678,23 @@
|
||||
wined3d_resource_get_pitch(&dst_surface->resource, &dst_row_pitch, &dst_slice_pitch);
|
||||
src_data = dst_data;
|
||||
src_row_pitch = dst_row_pitch;
|
||||
@ -8431,7 +8431,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
src_format = dst_surface->resource.format;
|
||||
dst_format = src_format;
|
||||
dst_fmt_flags = dst_surface->container->resource.format_flags;
|
||||
@@ -4448,12 +5703,14 @@
|
||||
@@ -4451,12 +5706,14 @@
|
||||
dst_fmt_flags = dst_surface->container->resource.format_flags;
|
||||
if (src_surface)
|
||||
{
|
||||
@ -8446,7 +8446,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
if (dst_surface->resource.format->id != src_surface->resource.format->id)
|
||||
{
|
||||
if (!(src_texture = surface_convert_format(src_surface, dst_format->id)))
|
||||
@@ -4464,9 +5721,13 @@
|
||||
@@ -4467,9 +5724,13 @@
|
||||
}
|
||||
src_surface = surface_from_resource(wined3d_texture_get_sub_resource(src_texture, 0));
|
||||
}
|
||||
@ -8460,7 +8460,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
src_format = src_surface->resource.format;
|
||||
src_fmt_flags = src_surface->container->resource.format_flags;
|
||||
}
|
||||
@@ -4476,8 +5737,12 @@
|
||||
@@ -4479,8 +5740,12 @@
|
||||
src_fmt_flags = dst_fmt_flags;
|
||||
}
|
||||
|
||||
@ -8473,7 +8473,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
|
||||
bpp = dst_surface->resource.format->byte_count;
|
||||
@@ -4488,12 +5753,24 @@
|
||||
@@ -4491,12 +5756,24 @@
|
||||
width = (dst_rect->right - dst_rect->left) * bpp;
|
||||
|
||||
if (src_surface)
|
||||
@ -8498,7 +8498,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
if (src_fmt_flags & dst_fmt_flags & WINED3DFMT_FLAG_BLOCKS)
|
||||
{
|
||||
@@ -4528,7 +5805,11 @@
|
||||
@@ -4531,7 +5808,11 @@
|
||||
}
|
||||
|
||||
hr = surface_cpu_blt_compressed(sbase, dbuf,
|
||||
@ -8510,7 +8510,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
src_format, flags, fx);
|
||||
goto release;
|
||||
}
|
||||
@@ -4536,7 +5817,11 @@
|
||||
@@ -4539,7 +5820,11 @@
|
||||
/* First, all the 'source-less' blits */
|
||||
if (flags & WINEDDBLT_COLORFILL)
|
||||
{
|
||||
@ -8522,7 +8522,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
flags &= ~WINEDDBLT_COLORFILL;
|
||||
}
|
||||
|
||||
@@ -4585,6 +5870,7 @@
|
||||
@@ -4588,6 +5873,7 @@
|
||||
for (y = 0; y < dstheight; ++y)
|
||||
{
|
||||
memcpy(dbuf, sbuf, width);
|
||||
@ -8530,7 +8530,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
sbuf += src_row_pitch;
|
||||
dbuf += dst_row_pitch;
|
||||
}
|
||||
@@ -4598,6 +5884,21 @@
|
||||
@@ -4601,6 +5887,21 @@
|
||||
{
|
||||
sbuf -= src_row_pitch;
|
||||
dbuf -= dst_row_pitch;
|
||||
@ -8552,7 +8552,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
memcpy(dbuf, sbuf, width);
|
||||
}
|
||||
}
|
||||
@@ -4607,8 +5908,13 @@
|
||||
@@ -4610,8 +5911,13 @@
|
||||
for (y = 0; y < dstheight; ++y)
|
||||
{
|
||||
memmove(dbuf, sbuf, width);
|
||||
@ -8566,7 +8566,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4617,9 +5923,15 @@
|
||||
@@ -4620,9 +5926,15 @@
|
||||
/* Stretching in y direction only. */
|
||||
for (y = sy = 0; y < dstheight; ++y, sy += yinc)
|
||||
{
|
||||
@ -8582,7 +8582,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4629,6 +5941,7 @@
|
||||
@@ -4632,6 +5944,7 @@
|
||||
int last_sy = -1;
|
||||
for (y = sy = 0; y < dstheight; ++y, sy += yinc)
|
||||
{
|
||||
@ -8590,7 +8590,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
sbuf = sbase + (sy >> 16) * src_row_pitch;
|
||||
|
||||
if ((sy >> 16) == (last_sy >> 16))
|
||||
@@ -4636,6 +5949,15 @@
|
||||
@@ -4639,6 +5952,15 @@
|
||||
/* This source row is the same as last source row -
|
||||
* Copy the already stretched row. */
|
||||
memcpy(dbuf, dbuf - dst_row_pitch, width);
|
||||
@ -8606,7 +8606,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4682,6 +6004,7 @@
|
||||
@@ -4685,6 +6007,7 @@
|
||||
}
|
||||
#undef STRETCH_ROW
|
||||
}
|
||||
@ -8614,7 +8614,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
dbuf += dst_row_pitch;
|
||||
last_sy = sy;
|
||||
}
|
||||
@@ -4690,6 +6013,16 @@
|
||||
@@ -4693,6 +6016,16 @@
|
||||
else
|
||||
{
|
||||
LONG dstyinc = dst_row_pitch, dstxinc = bpp;
|
||||
@ -8631,7 +8631,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
DWORD keylow = 0xffffffff, keyhigh = 0, keymask = 0xffffffff;
|
||||
DWORD destkeylow = 0x0, destkeyhigh = 0xffffffff, destkeymask = 0xffffffff;
|
||||
if (flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYDEST | WINEDDBLT_KEYSRCOVERRIDE | WINEDDBLT_KEYDESTOVERRIDE))
|
||||
@@ -4739,7 +6072,11 @@
|
||||
@@ -4742,7 +6075,11 @@
|
||||
LONG tmpxy;
|
||||
dTopLeft = dbuf;
|
||||
dTopRight = dbuf + ((dstwidth - 1) * bpp);
|
||||
@ -8643,7 +8643,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
dBottomRight = dBottomLeft + ((dstwidth - 1) * bpp);
|
||||
|
||||
if (fx->dwDDFX & WINEDDBLTFX_ARITHSTRETCHY)
|
||||
@@ -4816,6 +6153,7 @@
|
||||
@@ -4819,6 +6156,7 @@
|
||||
flags &= ~(WINEDDBLT_DDFX);
|
||||
}
|
||||
|
||||
@ -8651,7 +8651,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
#define COPY_COLORKEY_FX(type) \
|
||||
do { \
|
||||
const type *s; \
|
||||
@@ -4837,6 +6175,29 @@
|
||||
@@ -4840,6 +6178,29 @@
|
||||
d = (type *)(((BYTE *)d) + dstyinc); \
|
||||
} \
|
||||
} while(0)
|
||||
@ -8681,7 +8681,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
switch (bpp)
|
||||
{
|
||||
@@ -4855,7 +6216,11 @@
|
||||
@@ -4858,7 +6219,11 @@
|
||||
BYTE *d = dbuf, *dx;
|
||||
for (y = sy = 0; y < dstheight; ++y, sy += yinc)
|
||||
{
|
||||
@ -8693,7 +8693,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
dx = d;
|
||||
for (x = sx = 0; x < dstwidth; ++x, sx+= xinc)
|
||||
{
|
||||
@@ -4886,10 +6251,12 @@
|
||||
@@ -4889,10 +6254,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@ -8706,7 +8706,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
error:
|
||||
if (flags && FIXME_ON(d3d_surface))
|
||||
{
|
||||
@@ -4897,6 +6264,7 @@
|
||||
@@ -4900,6 +6267,7 @@
|
||||
}
|
||||
|
||||
release:
|
||||
@ -8714,7 +8714,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
if (dst_data)
|
||||
{
|
||||
wined3d_resource_release_map_ptr(&dst_surface->resource, context);
|
||||
@@ -4915,6 +6283,14 @@
|
||||
@@ -4918,6 +6286,14 @@
|
||||
wined3d_texture_decref(src_texture);
|
||||
if (context)
|
||||
context_release(context);
|
||||
@ -8729,7 +8729,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
return hr;
|
||||
}
|
||||
@@ -4959,6 +6335,7 @@
|
||||
@@ -4962,6 +6338,7 @@
|
||||
cpu_blit_blit_surface,
|
||||
};
|
||||
|
||||
@ -8737,7 +8737,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect,
|
||||
struct wined3d_surface *src_surface, const RECT *src_rect, DWORD flags,
|
||||
const WINEDDBLTFX *fx, enum wined3d_texture_filter_type filter)
|
||||
@@ -4966,6 +6343,16 @@
|
||||
@@ -4969,6 +6346,16 @@
|
||||
struct wined3d_swapchain *src_swapchain, *dst_swapchain;
|
||||
struct wined3d_device *device = dst_surface->resource.device;
|
||||
DWORD src_ds_flags, dst_ds_flags;
|
||||
@ -8754,7 +8754,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
BOOL scale, convert;
|
||||
|
||||
static const DWORD simple_blit = WINEDDBLT_ASYNC
|
||||
@@ -4976,6 +6363,106 @@
|
||||
@@ -4979,6 +6366,106 @@
|
||||
| WINEDDBLT_DEPTHFILL
|
||||
| WINEDDBLT_DONOTWAIT;
|
||||
|
||||
@ -8861,7 +8861,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
if (!device->d3d_initialized)
|
||||
{
|
||||
WARN("D3D not initialized, using fallback.\n");
|
||||
@@ -5018,8 +6505,13 @@
|
||||
@@ -5021,8 +6508,13 @@
|
||||
}
|
||||
|
||||
scale = src_surface
|
||||
@ -8875,7 +8875,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
convert = src_surface && src_surface->resource.format->id != dst_surface->resource.format->id;
|
||||
|
||||
dst_ds_flags = dst_surface->container->resource.format_flags
|
||||
@@ -5039,6 +6531,7 @@
|
||||
@@ -5042,6 +6534,7 @@
|
||||
TRACE("Depth fill.\n");
|
||||
|
||||
if (!surface_convert_depth_to_float(dst_surface, fx->u5.dwFillDepth, &depth))
|
||||
@ -8883,7 +8883,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
return;
|
||||
|
||||
if (SUCCEEDED(wined3d_surface_depth_fill(dst_surface, dst_rect, depth)))
|
||||
@@ -5049,6 +6542,24 @@
|
||||
@@ -5052,6 +6545,24 @@
|
||||
if (SUCCEEDED(wined3d_surface_depth_blt(src_surface, src_surface->container->resource.draw_binding,
|
||||
src_rect, dst_surface, dst_surface->container->resource.draw_binding, dst_rect)))
|
||||
return;
|
||||
@ -8908,7 +8908,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -5057,8 +6568,13 @@
|
||||
@@ -5060,8 +6571,13 @@
|
||||
|
||||
/* In principle this would apply to depth blits as well, but we don't
|
||||
* implement those in the CPU blitter at the moment. */
|
||||
@ -8922,7 +8922,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
{
|
||||
if (scale)
|
||||
TRACE("Not doing sysmem blit because of scaling.\n");
|
||||
@@ -5079,8 +6595,13 @@
|
||||
@@ -5082,8 +6598,13 @@
|
||||
palette, fx->u5.dwFillColor, &color))
|
||||
goto fallback;
|
||||
|
||||
@ -8936,7 +8936,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -5098,8 +6619,13 @@
|
||||
@@ -5101,8 +6622,13 @@
|
||||
color_key = &src_surface->container->async.src_blt_color_key;
|
||||
blit_op = WINED3D_BLIT_OP_COLOR_BLIT_CKEY;
|
||||
}
|
||||
@ -8950,7 +8950,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
{
|
||||
/* Upload */
|
||||
if (scale)
|
||||
@@ -5108,6 +6634,7 @@
|
||||
@@ -5111,6 +6637,7 @@
|
||||
TRACE("Not doing upload because of format conversion.\n");
|
||||
else
|
||||
{
|
||||
@ -8958,7 +8958,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
POINT dst_point = {dst_rect->left, dst_rect->top};
|
||||
|
||||
if (SUCCEEDED(surface_upload_from_surface(dst_surface, &dst_point, src_surface, src_rect)))
|
||||
@@ -5120,6 +6647,15 @@
|
||||
@@ -5123,6 +6650,15 @@
|
||||
context_release(context);
|
||||
}
|
||||
return;
|
||||
@ -8974,7 +8974,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5143,6 +6679,7 @@
|
||||
@@ -5146,6 +6682,7 @@
|
||||
wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, NULL, 0);
|
||||
dst_swapchain->desc.swap_effect = swap_effect;
|
||||
|
||||
@ -8982,7 +8982,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5338,6 +6875,49 @@
|
||||
@@ -5341,6 +6878,49 @@
|
||||
wined3d_surface_location_invalidated,
|
||||
wined3d_surface_load_location,
|
||||
};
|
||||
@ -9032,7 +9032,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
|
||||
static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_texture *container,
|
||||
const struct wined3d_resource_desc *desc, GLenum target, unsigned int level, unsigned int layer, DWORD flags)
|
||||
@@ -5405,7 +6985,11 @@
|
||||
@@ -5408,7 +6988,11 @@
|
||||
}
|
||||
|
||||
surface->container = container;
|
||||
@ -9044,7 +9044,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
list_init(&surface->renderbuffers);
|
||||
list_init(&surface->overlays);
|
||||
|
||||
@@ -5437,9 +7021,14 @@
|
||||
@@ -5440,9 +7024,14 @@
|
||||
if (surface->resource.map_binding == WINED3D_LOCATION_DIB)
|
||||
{
|
||||
wined3d_resource_free_sysmem(&surface->resource);
|
||||
@ -9059,7 +9059,7 @@ diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
}
|
||||
|
||||
return hr;
|
||||
@@ -5466,7 +7055,11 @@
|
||||
@@ -5469,7 +7058,11 @@
|
||||
if (FAILED(hr = surface_init(object, container, desc, target, level, layer, flags)))
|
||||
{
|
||||
WARN("Failed to initialize surface, returning %#x.\n", hr);
|
||||
@ -9626,7 +9626,7 @@ diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
--- a/dlls/wined3d/resource.c
|
||||
+++ b/dlls/wined3d/resource.c
|
||||
@@ -193,7 +193,9 @@
|
||||
@@ -200,7 +200,9 @@
|
||||
ERR("Failed to allocate system memory.\n");
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
@ -9636,7 +9636,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -217,6 +219,7 @@
|
||||
@@ -224,6 +226,7 @@
|
||||
return WINED3D_OK;
|
||||
}
|
||||
|
||||
@ -9644,7 +9644,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
void wined3d_resource_free_bo(struct wined3d_resource *resource)
|
||||
{
|
||||
struct wined3d_context *context = context_acquire(resource->device, NULL);
|
||||
@@ -242,6 +245,7 @@
|
||||
@@ -249,6 +252,7 @@
|
||||
resource->map_heap_memory = NULL;
|
||||
}
|
||||
|
||||
@ -9652,7 +9652,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
void resource_cleanup(struct wined3d_resource *resource)
|
||||
{
|
||||
const struct wined3d *d3d = resource->device->wined3d;
|
||||
@@ -254,7 +258,11 @@
|
||||
@@ -261,7 +265,11 @@
|
||||
adapter_adjust_memory(resource->device->adapter, (INT64)0 - resource->size);
|
||||
}
|
||||
|
||||
@ -9664,7 +9664,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
|
||||
device_resource_released(resource->device, resource);
|
||||
}
|
||||
@@ -264,9 +272,11 @@
|
||||
@@ -271,9 +279,11 @@
|
||||
if (resource->map_count)
|
||||
ERR("Resource %p is being unloaded while mapped.\n", resource);
|
||||
|
||||
@ -9676,7 +9676,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
context_resource_unloaded(resource->device,
|
||||
resource, resource->type);
|
||||
}
|
||||
@@ -329,7 +339,11 @@
|
||||
@@ -336,7 +346,11 @@
|
||||
p = (void **)(((ULONG_PTR)mem + align) & ~(RESOURCE_ALIGNMENT - 1)) - 1;
|
||||
*p = mem;
|
||||
|
||||
@ -9688,7 +9688,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -395,7 +409,11 @@
|
||||
@@ -402,7 +416,11 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -9700,7 +9700,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
{
|
||||
if (d3d_flags & WINED3D_MAP_READONLY)
|
||||
return GL_READ_ONLY_ARB;
|
||||
@@ -465,6 +483,7 @@
|
||||
@@ -474,6 +492,7 @@
|
||||
|
||||
TRACE("Returning row pitch %u, slice pitch %u.\n", *row_pitch, *slice_pitch);
|
||||
}
|
||||
@ -9708,7 +9708,7 @@ diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
|
||||
void wined3d_resource_validate_location(struct wined3d_resource *resource, DWORD location)
|
||||
{
|
||||
@@ -1012,3 +1031,4 @@
|
||||
@@ -1021,3 +1040,4 @@
|
||||
|
||||
wined3d_resource_invalidate_location(resource, ~resource->map_binding);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user