Rebase against 42cbc05e59d32228f4edd171ca66e4cbe5645d1d.

This commit is contained in:
Sebastian Lackner 2015-06-09 16:04:06 +02:00
parent 44a9c0cc8a
commit 995b761dee
3 changed files with 86 additions and 100 deletions

View File

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

View File

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

View File

@ -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);
}