Rebase against 1a0c4efba9430382e3427cb3f355906bc2a66861.

This commit is contained in:
Sebastian Lackner
2015-07-21 05:08:19 +02:00
parent 2fdae8614e
commit 5b94baf194
12 changed files with 69 additions and 1407 deletions

View File

@@ -3982,7 +3982,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
void CDECL wined3d_device_copy_resource(struct wined3d_device *device,
@@ -3887,8 +4329,14 @@
@@ -3961,8 +4403,14 @@
rect = &r;
}
@@ -3997,7 +3997,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
struct wined3d_rendertarget_view * CDECL wined3d_device_get_rendertarget_view(const struct wined3d_device *device,
@@ -3902,6 +4350,7 @@
@@ -3976,6 +4424,7 @@
return NULL;
}
@@ -4005,7 +4005,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
return device->state.fb.render_targets[view_idx];
}
@@ -3917,6 +4366,22 @@
@@ -3991,6 +4440,22 @@
{
struct wined3d_rendertarget_view *prev;
struct wined3d_fb_state *fb = &device->state.fb;
@@ -4028,7 +4028,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
TRACE("device %p, view_idx %u, view %p, set_viewport %#x.\n",
device, view_idx, view, set_viewport);
@@ -3956,6 +4421,7 @@
@@ -4030,6 +4495,7 @@
}
@@ -4036,7 +4036,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
prev = fb->render_targets[view_idx];
if (view == prev)
return WINED3D_OK;
@@ -3963,6 +4429,15 @@
@@ -4037,6 +4503,15 @@
if (view)
wined3d_rendertarget_view_incref(view);
fb->render_targets[view_idx] = view;
@@ -4052,7 +4052,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
wined3d_cs_emit_set_rendertarget_view(device->cs, view_idx, view);
/* Release after the assignment, to prevent device_resource_released()
* from seeing the surface as still in use. */
@@ -3974,6 +4449,7 @@
@@ -4048,6 +4523,7 @@
void CDECL wined3d_device_set_depth_stencil_view(struct wined3d_device *device, struct wined3d_rendertarget_view *view)
{
@@ -4060,7 +4060,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
struct wined3d_fb_state *fb = &device->state.fb;
struct wined3d_rendertarget_view *prev;
@@ -3998,6 +4474,79 @@
@@ -4072,6 +4548,79 @@
{
TRACE("device %p, x_hotspot %u, y_hotspot %u, cursor_image %p.\n",
device, x_hotspot, y_hotspot, cursor_image);
@@ -4140,7 +4140,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (cursor_image)
{
@@ -4033,8 +4582,16 @@
@@ -4107,8 +4656,16 @@
* release it after setting the cursor image. Windows doesn't
* addref the set surface, so we can't do this either without
* creating circular refcount dependencies. */
@@ -4157,7 +4157,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
device->cursorWidth = cursor_image->resource.width;
device->cursorHeight = cursor_image->resource.height;
@@ -4134,6 +4691,12 @@
@@ -4208,6 +4765,12 @@
else
SetCursor(NULL);
}
@@ -4170,7 +4170,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
return oldVisible;
}
@@ -4144,8 +4707,10 @@
@@ -4218,8 +4781,10 @@
TRACE("device %p.\n", device);
@@ -4181,7 +4181,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry)
{
TRACE("Checking resource %p for eviction.\n", resource);
@@ -4153,6 +4718,7 @@
@@ -4227,6 +4792,7 @@
if (resource->pool == WINED3D_POOL_MANAGED && !resource->map_count)
{
TRACE("Evicting %p.\n", resource);
@@ -4189,7 +4189,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
wined3d_cs_emit_evict_resource(device->cs, resource);
}
}
@@ -4173,6 +4739,37 @@
@@ -4247,6 +4813,37 @@
gl_info = context->gl_info;
wine_rb_clear(&device->samplers, device_free_sampler, NULL);
@@ -4227,7 +4227,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (device->depth_blt_texture)
{
@@ -4193,6 +4790,7 @@
@@ -4267,6 +4864,7 @@
HeapFree(GetProcessHeap(), 0, swapchain->context);
swapchain->context = NULL;
@@ -4235,7 +4235,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
swapchain->num_contexts = 0;
}
@@ -4212,6 +4810,14 @@
@@ -4286,6 +4884,14 @@
static HRESULT create_primary_opengl_context(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
{
@@ -4250,7 +4250,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
HRESULT hr;
if (FAILED(hr = device->shader_backend->shader_alloc_private(device,
@@ -4228,6 +4834,7 @@
@@ -4302,6 +4908,7 @@
return hr;
}
@@ -4258,7 +4258,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
hr = wined3d_cs_emit_create_swapchain_context(device->cs, swapchain);
if (FAILED(hr))
{
@@ -4238,6 +4845,34 @@
@@ -4312,6 +4919,34 @@
}
wined3d_cs_emit_create_dummy_textures(device->cs);
@@ -4293,7 +4293,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
return WINED3D_OK;
}
@@ -4258,8 +4893,10 @@
@@ -4332,8 +4967,10 @@
unsigned int i;
TRACE("device %p, swapchain_desc %p, mode %p, callback %p.\n", device, swapchain_desc, mode, callback);
@@ -4304,7 +4304,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (!(swapchain = wined3d_device_get_swapchain(device, 0)))
{
@@ -4275,9 +4912,21 @@
@@ -4349,9 +4986,21 @@
wined3d_texture_decref(device->logo_texture);
device->logo_texture = NULL;
}
@@ -4326,7 +4326,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
{
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@@ -4286,6 +4935,7 @@
@@ -4360,6 +5009,7 @@
}
wined3d_device_set_depth_stencil_view(device, NULL);
@@ -4334,7 +4334,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (reset_state)
{
state_unbind_resources(&device->state);
@@ -4295,6 +4945,12 @@
@@ -4369,6 +5019,12 @@
{
wined3d_surface_decref(device->cs->onscreen_depth_stencil);
device->cs->onscreen_depth_stencil = NULL;
@@ -4347,7 +4347,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
if (reset_state)
@@ -4307,6 +4963,7 @@
@@ -4381,6 +5037,7 @@
}
}
@@ -4355,7 +4355,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
/* Free implicit resources and wait for the command stream before modifying
* swapchain parameters. After modifying the swapchain parameters a new GL
* context may be acquired by the worker thread. This causes problems in the
@@ -4328,6 +4985,7 @@
@@ -4402,6 +5059,7 @@
}
device->cs->ops->finish(device->cs);
@@ -4363,7 +4363,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
/* Is it necessary to recreate the gl context? Actually every setting can be changed
* on an existing gl context, so there's no real need for recreation.
*
@@ -4469,6 +5127,13 @@
@@ -4543,6 +5201,13 @@
}
}
@@ -4377,7 +4377,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (swapchain->desc.enable_auto_depth_stencil)
{
struct wined3d_resource_desc surface_desc;
@@ -4506,6 +5171,13 @@
@@ -4580,6 +5245,13 @@
wined3d_device_set_depth_stencil_view(device, device->auto_depth_stencil_view);
}
@@ -4391,7 +4391,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (swapchain->desc.backbuffer_count && FAILED(hr = wined3d_rendertarget_view_create_from_surface(
surface_from_resource(wined3d_texture_get_sub_resource(swapchain->back_buffers[0], 0)),
NULL, &wined3d_null_parent_ops, &device->back_buffer_view)))
@@ -4588,12 +5260,20 @@
@@ -4662,12 +5334,20 @@
}
wined3d_cs_emit_reset_state(device->cs);
state_cleanup(&device->state);
@@ -4412,7 +4412,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
&device->adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT)))
ERR("Failed to initialize device state, hr %#x.\n", hr);
device->update_state = &device->state;
@@ -4602,6 +5282,7 @@
@@ -4676,6 +5356,7 @@
}
else if (device->back_buffer_view)
{
@@ -4420,7 +4420,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
struct wined3d_state *state = &device->state;
wined3d_device_set_rendertarget_view(device, 0, device->back_buffer_view, FALSE);
@@ -4617,6 +5298,24 @@
@@ -4691,6 +5372,24 @@
state->scissor_rect.left = 0;
state->scissor_rect.right = swapchain->desc.backbuffer_width;
state->scissor_rect.bottom = swapchain->desc.backbuffer_height;
@@ -4445,7 +4445,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
wined3d_cs_emit_set_scissor_rect(device->cs, &state->scissor_rect);
}
@@ -4695,6 +5394,10 @@
@@ -4769,6 +5468,10 @@
TRACE("device %p, resource %p, type %s.\n", device, resource, debug_d3dresourcetype(type));
@@ -4456,7 +4456,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
switch (type)
{
case WINED3D_RTYPE_SURFACE:
@@ -4705,6 +5408,7 @@
@@ -4779,6 +5482,7 @@
for (i = 0; i < device->adapter->gl_info.limits.buffers; ++i)
{
@@ -4464,7 +4464,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
if (wined3d_rendertarget_view_get_surface(device->state.fb.render_targets[i]) == surface)
{
ERR("Surface %p is still in use as render target %u.\n", surface, i);
@@ -4716,6 +5420,19 @@
@@ -4790,6 +5494,19 @@
{
ERR("Surface %p is still in use as depth/stencil buffer.\n", surface);
device->state.fb.depth_stencil = NULL;
@@ -4484,7 +4484,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
}
}
break;
@@ -4878,7 +5595,11 @@
@@ -4952,7 +5669,11 @@
device->blitter = adapter->blitter;
@@ -4496,7 +4496,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
&adapter->d3d_info, WINED3D_STATE_INIT_DEFAULT)))
{
ERR("Failed to initialize device state, hr %#x.\n", hr);
@@ -4977,6 +5698,7 @@
@@ -5051,6 +5772,7 @@
else
return CallWindowProcA(proc, window, message, wparam, lparam);
}
@@ -4504,7 +4504,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
/* Context activation is done by the caller */
struct wined3d_gl_bo *wined3d_device_get_bo(struct wined3d_device *device, UINT size, GLenum gl_usage,
@@ -5030,3 +5752,4 @@
@@ -5104,3 +5826,4 @@
wined3d_device_destroy_bo(device, context, bo);
}