Rebase against upstream changes.

This commit is contained in:
Sebastian Lackner
2015-04-07 20:01:32 +02:00
parent d28a7ba29e
commit c5bbea55d2
23 changed files with 278 additions and 1113 deletions

View File

@@ -1,4 +1,4 @@
From 3b80eec8bd2af7858157bdd2b821f7946023081f Mon Sep 17 00:00:00 2001
From 012ceb18e78f44c3bb3ba11d65a5163c93713d5d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Mon, 29 Apr 2013 18:49:53 +0200
Subject: wined3d: Send blits through the command stream.
@@ -12,7 +12,7 @@ between surface_blt and surface_blt_ugly isn't particularly nice.
3 files changed, 226 insertions(+), 139 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 949bd6b..dcaedfd 100644
index 17e6921..86fab74 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -73,6 +73,7 @@ enum wined3d_cs_op
@@ -42,7 +42,7 @@ index 949bd6b..dcaedfd 100644
/* FIXME: The list synchronization probably isn't particularly fast. */
static void wined3d_cs_list_enqueue(struct wined3d_cs_list *list, struct wined3d_cs_block *block)
{
@@ -1393,6 +1406,9 @@ static UINT wined3d_cs_exec_glfinish(struct wined3d_cs *cs, const void *data)
@@ -1396,6 +1409,9 @@ static UINT wined3d_cs_exec_glfinish(struct wined3d_cs *cs, const void *data)
struct wined3d_device *device = cs->device;
struct wined3d_context *context;
@@ -52,7 +52,7 @@ index 949bd6b..dcaedfd 100644
context = context_acquire(device, NULL);
context->gl_info->gl_ops.gl.p_glFinish();
context_release(context);
@@ -1604,6 +1620,38 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enab
@@ -1607,6 +1623,38 @@ void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enab
cs->ops->submit(cs);
}
@@ -91,7 +91,7 @@ index 949bd6b..dcaedfd 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_FENCE */ wined3d_cs_exec_fence,
@@ -1643,6 +1691,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1646,6 +1694,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_SET_PRIMITIVE_TYPE */ wined3d_cs_exec_set_primitive_type,
/* WINED3D_CS_OP_SET_LIGHT */ wined3d_cs_exec_set_light,
/* WINED3D_CS_OP_SET_LIGHT_ENABLE */ wined3d_cs_exec_set_light_enable,
@@ -99,7 +99,7 @@ index 949bd6b..dcaedfd 100644
};
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size)
@@ -1717,6 +1766,7 @@ static DWORD WINAPI wined3d_cs_run(void *thread_param)
@@ -1720,6 +1769,7 @@ static DWORD WINAPI wined3d_cs_run(void *thread_param)
TRACE("Started.\n");
@@ -108,10 +108,10 @@ index 949bd6b..dcaedfd 100644
{
struct wined3d_cs_block *block;
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 6e8e2f5..8a833d5 100644
index 3cd4ab1..594562a 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -5092,14 +5092,13 @@ const struct blit_shader cpu_blit = {
@@ -4990,14 +4990,13 @@ const struct blit_shader cpu_blit = {
cpu_blit_depth_fill,
};
@@ -128,7 +128,7 @@ index 6e8e2f5..8a833d5 100644
BOOL scale, convert;
static const DWORD simple_blit = WINEDDBLT_ASYNC
@@ -5108,111 +5107,6 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -5006,111 +5005,6 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
| WINEDDBLT_DEPTHFILL
| WINEDDBLT_DONOTWAIT;
@@ -240,7 +240,7 @@ index 6e8e2f5..8a833d5 100644
if (!device->d3d_initialized)
{
WARN("D3D not initialized, using fallback.\n");
@@ -5255,8 +5149,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -5153,8 +5047,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
}
scale = src_surface
@@ -251,7 +251,7 @@ index 6e8e2f5..8a833d5 100644
convert = src_surface && src_surface->resource.format->id != dst_surface->resource.format->id;
dst_ds_flags = dst_surface->resource.format->flags & (WINED3DFMT_FLAG_DEPTH | WINED3DFMT_FLAG_STENCIL);
@@ -5274,22 +5168,16 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -5172,22 +5066,16 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
TRACE("Depth fill.\n");
if (!surface_convert_depth_to_float(dst_surface, fx->u5.dwFillDepth, &depth))
@@ -279,8 +279,8 @@ index 6e8e2f5..8a833d5 100644
}
}
else
@@ -5316,8 +5204,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
if (!surface_convert_color_to_float(dst_surface, fx->u5.dwFillColor, &color))
@@ -5216,8 +5104,8 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
palette, fx->u5.dwFillColor, &color))
goto fallback;
- if (SUCCEEDED(surface_color_fill(dst_surface, &dst_rect, &color)))
@@ -290,7 +290,7 @@ index 6e8e2f5..8a833d5 100644
}
else
{
@@ -5333,9 +5221,9 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -5233,9 +5121,9 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
TRACE("Not doing upload because of format conversion.\n");
else
{
@@ -302,7 +302,7 @@ index 6e8e2f5..8a833d5 100644
{
if (!wined3d_resource_is_offscreen(&dst_surface->container->resource))
{
@@ -5344,7 +5232,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -5244,7 +5132,7 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
dst_surface->container->resource.draw_binding);
context_release(context);
}
@@ -311,7 +311,7 @@ index 6e8e2f5..8a833d5 100644
}
}
}
@@ -5369,51 +5257,192 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -5269,51 +5157,192 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
wined3d_swapchain_present(dst_swapchain, NULL, NULL, dst_swapchain->win_handle, NULL, 0);
dst_swapchain->desc.swap_effect = swap_effect;
@@ -518,10 +518,10 @@ index 6e8e2f5..8a833d5 100644
static const struct wined3d_resource_ops surface_resource_ops =
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 041feb3..342577c 100644
index ebbc6e8..584fcf3 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2426,6 +2426,9 @@ void wined3d_surface_destroy(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
@@ -2434,6 +2434,9 @@ void wined3d_surface_destroy(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info,
const struct wined3d_format *format, const RECT *src_rect, UINT src_pitch, const POINT *dst_point,
BOOL srgb, const struct wined3d_const_bo_address *data) DECLSPEC_HIDDEN;
@@ -531,7 +531,7 @@ index 041feb3..342577c 100644
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
@@ -2570,6 +2573,7 @@ struct wined3d_cs
@@ -2583,6 +2586,7 @@ struct wined3d_cs
struct wined3d_device *device;
struct wined3d_state state;
HANDLE thread;
@@ -539,7 +539,7 @@ index 041feb3..342577c 100644
DWORD tls_idx;
struct wined3d_surface *onscreen_depth_stencil;
@@ -2646,6 +2650,10 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs,
@@ -2659,6 +2663,10 @@ void wined3d_cs_emit_set_primitive_type(struct wined3d_cs *cs,
GLenum primitive_type) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_light(struct wined3d_cs *cs, const struct wined3d_light_info *light) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_light_enable(struct wined3d_cs *cs, UINT idx, BOOL enable) DECLSPEC_HIDDEN;
@@ -551,5 +551,5 @@ index 041feb3..342577c 100644
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.2.1
2.3.5

File diff suppressed because it is too large Load Diff