mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against c698682b3286d72cc7c4c4624b4d14b03dbe6908.
This commit is contained in:
parent
93e4c328d7
commit
c58c70e961
File diff suppressed because it is too large
Load Diff
@ -1,950 +0,0 @@
|
||||
From a1de88de49c28a61ecc21f380e6ad3c25037eb59 Mon Sep 17 00:00:00 2001
|
||||
From: Lucian Poston <lucian.poston@gmail.com>
|
||||
Date: Thu, 3 May 2018 03:37:07 -0700
|
||||
Subject: d2d1: Implement ID2D1DeviceContext
|
||||
|
||||
https://bugs.winehq.org/show_bug.cgi?id=44052
|
||||
|
||||
Signed-off-by: Lucian Poston <lucian.poston@gmail.com>
|
||||
---
|
||||
dlls/d2d1/d2d1_private.h | 16 +++
|
||||
dlls/d2d1/device.c | 118 +++++++++++++----
|
||||
dlls/d2d1/device_context.c | 318 ++++++++++++++++++++++++++++++++-------------
|
||||
3 files changed, 336 insertions(+), 116 deletions(-)
|
||||
|
||||
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
|
||||
index 0bb0112..1958aa0 100644
|
||||
--- a/dlls/d2d1/d2d1_private.h
|
||||
+++ b/dlls/d2d1/d2d1_private.h
|
||||
@@ -154,6 +154,10 @@ struct d2d_d3d_render_target
|
||||
|
||||
HRESULT d2d_d3d_create_render_target(ID2D1Factory *factory, IDXGISurface *surface, IUnknown *outer_unknown,
|
||||
const D2D1_RENDER_TARGET_PROPERTIES *desc, ID2D1RenderTarget **render_target) DECLSPEC_HIDDEN;
|
||||
+HRESULT d2d_d3d_create_render_target_with_device(ID2D1Factory *factory,
|
||||
+ ID3D10Device *device, IUnknown *outer_unknown,
|
||||
+ const D2D1_RENDER_TARGET_PROPERTIES *desc,
|
||||
+ ID2D1RenderTarget **render_target) DECLSPEC_HIDDEN;
|
||||
HRESULT d2d_d3d_render_target_create_rtv(ID2D1RenderTarget *render_target, IDXGISurface1 *surface) DECLSPEC_HIDDEN;
|
||||
|
||||
struct d2d_wic_render_target
|
||||
@@ -577,4 +581,16 @@ static inline const char *debug_d2d_rect_f(const D2D1_RECT_F *rect)
|
||||
return wine_dbg_sprintf("(%.8e,%.8e)-(%.8e,%.8e)", rect->left, rect->top, rect->right, rect->bottom );
|
||||
}
|
||||
|
||||
+struct d2d_device_context
|
||||
+{
|
||||
+ ID2D1DeviceContext ID2D1DeviceContext_iface;
|
||||
+ LONG refcount;
|
||||
+ ID2D1Device *device;
|
||||
+ ID2D1RenderTarget *dxgi_target;
|
||||
+};
|
||||
+
|
||||
+HRESULT d2d_device_context_init(struct d2d_device_context *This,
|
||||
+ ID2D1Device *device_iface, D2D1_DEVICE_CONTEXT_OPTIONS options,
|
||||
+ ID3D10Device *d3d_device) DECLSPEC_HIDDEN;
|
||||
+
|
||||
#endif /* __WINE_D2D1_PRIVATE_H */
|
||||
diff --git a/dlls/d2d1/device.c b/dlls/d2d1/device.c
|
||||
index f74e9f8..24fb3c9 100644
|
||||
--- a/dlls/d2d1/device.c
|
||||
+++ b/dlls/d2d1/device.c
|
||||
@@ -2144,7 +2144,7 @@ static const struct ID2D1GdiInteropRenderTargetVtbl d2d_gdi_interop_render_targe
|
||||
};
|
||||
|
||||
static HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_target, ID2D1Factory *factory,
|
||||
- IDXGISurface *surface, IUnknown *outer_unknown, const D2D1_RENDER_TARGET_PROPERTIES *desc)
|
||||
+ IDXGISurface *surface, ID3D10Device *device, IUnknown *outer_unknown, const D2D1_RENDER_TARGET_PROPERTIES *desc)
|
||||
{
|
||||
D3D10_SUBRESOURCE_DATA buffer_data;
|
||||
D3D10_STATE_BLOCK_MASK state_mask;
|
||||
@@ -3033,25 +3033,41 @@ static HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_t
|
||||
render_target->outer_unknown = outer_unknown ? outer_unknown :
|
||||
(IUnknown *)&render_target->ID2D1RenderTarget_iface;
|
||||
|
||||
- if (FAILED(hr = IDXGISurface_GetDevice(surface, &IID_ID3D10Device, (void **)&render_target->device)))
|
||||
+ if (surface == NULL)
|
||||
{
|
||||
- WARN("Failed to get device interface, hr %#x.\n", hr);
|
||||
- ID2D1Factory_Release(render_target->factory);
|
||||
- return hr;
|
||||
+ ID3D10Device_AddRef(render_target->device = device);
|
||||
}
|
||||
-
|
||||
- if (FAILED(hr = IDXGISurface_QueryInterface(surface, &IID_ID3D10Resource, (void **)&resource)))
|
||||
+ else
|
||||
{
|
||||
- WARN("Failed to get ID3D10Resource interface, hr %#x.\n", hr);
|
||||
- goto err;
|
||||
- }
|
||||
+ if (FAILED(hr = IDXGISurface_GetDevice(surface, &IID_ID3D10Device, (void **)&render_target->device)))
|
||||
+ {
|
||||
+ WARN("Failed to get device interface, hr %#x.\n", hr);
|
||||
+ ID2D1Factory_Release(render_target->factory);
|
||||
+ return hr;
|
||||
+ }
|
||||
|
||||
- hr = ID3D10Device_CreateRenderTargetView(render_target->device, resource, NULL, &render_target->view);
|
||||
- ID3D10Resource_Release(resource);
|
||||
- if (FAILED(hr))
|
||||
- {
|
||||
- WARN("Failed to create rendertarget view, hr %#x.\n", hr);
|
||||
- goto err;
|
||||
+ if (FAILED(hr = IDXGISurface_QueryInterface(surface, &IID_ID3D10Resource, (void **)&resource)))
|
||||
+ {
|
||||
+ WARN("Failed to get ID3D10Resource interface, hr %#x.\n", hr);
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ hr = ID3D10Device_CreateRenderTargetView(render_target->device, resource, NULL, &render_target->view);
|
||||
+ ID3D10Resource_Release(resource);
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ WARN("Failed to create rendertarget view, hr %#x.\n", hr);
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ if (FAILED(hr = IDXGISurface_GetDesc(surface, &surface_desc)))
|
||||
+ {
|
||||
+ WARN("Failed to get surface desc, hr %#x.\n", hr);
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ render_target->pixel_size.width = surface_desc.Width;
|
||||
+ render_target->pixel_size.height = surface_desc.Height;
|
||||
}
|
||||
|
||||
if (FAILED(hr = D3D10StateBlockMaskEnableAll(&state_mask)))
|
||||
@@ -3176,15 +3192,7 @@ static HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_t
|
||||
goto err;
|
||||
}
|
||||
|
||||
- if (FAILED(hr = IDXGISurface_GetDesc(surface, &surface_desc)))
|
||||
- {
|
||||
- WARN("Failed to get surface desc, hr %#x.\n", hr);
|
||||
- goto err;
|
||||
- }
|
||||
-
|
||||
render_target->desc.pixelFormat = desc->pixelFormat;
|
||||
- render_target->pixel_size.width = surface_desc.Width;
|
||||
- render_target->pixel_size.height = surface_desc.Height;
|
||||
render_target->drawing_state.transform = identity;
|
||||
|
||||
if (!d2d_clip_stack_init(&render_target->clip_stack))
|
||||
@@ -3238,7 +3246,31 @@ HRESULT d2d_d3d_create_render_target(ID2D1Factory *factory, IDXGISurface *surfac
|
||||
if (!(object = heap_alloc_zero(sizeof(*object))))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
- if (FAILED(hr = d2d_d3d_render_target_init(object, factory, surface, outer_unknown, desc)))
|
||||
+ if (FAILED(hr = d2d_d3d_render_target_init(object, factory, surface, NULL, outer_unknown, desc)))
|
||||
+ {
|
||||
+ WARN("Failed to initialize render target, hr %#x.\n", hr);
|
||||
+ HeapFree(GetProcessHeap(), 0, object);
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
+ TRACE("Created render target %p.\n", object);
|
||||
+ *render_target = &object->ID2D1RenderTarget_iface;
|
||||
+
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
+HRESULT d2d_d3d_create_render_target_with_device(ID2D1Factory *factory,
|
||||
+ ID3D10Device *device, IUnknown *outer_unknown,
|
||||
+ const D2D1_RENDER_TARGET_PROPERTIES *desc,
|
||||
+ ID2D1RenderTarget **render_target)
|
||||
+{
|
||||
+ struct d2d_d3d_render_target *object;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
|
||||
+ return E_OUTOFMEMORY;
|
||||
+
|
||||
+ if (FAILED(hr = d2d_d3d_render_target_init(object, factory, NULL, device, outer_unknown, desc)))
|
||||
{
|
||||
WARN("Failed to initialize render target, hr %#x.\n", hr);
|
||||
heap_free(object);
|
||||
@@ -3354,9 +3386,41 @@ static void WINAPI d2d_device_GetFactory(ID2D1Device *iface, ID2D1Factory **fact
|
||||
static HRESULT WINAPI d2d_device_CreateDeviceContext(ID2D1Device *iface, D2D1_DEVICE_CONTEXT_OPTIONS options,
|
||||
ID2D1DeviceContext **context)
|
||||
{
|
||||
- FIXME("iface %p, options %#x, context %p stub!\n", iface, options, context);
|
||||
+ struct d2d_device *device = impl_from_ID2D1Device(iface);
|
||||
+ struct d2d_device_context *object;
|
||||
+ ID3D10Device *d3d_device;
|
||||
+ HRESULT hr;
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("iface %p, options %#x, context %p.\n", iface, options, context);
|
||||
+ if (!context)
|
||||
+ return E_POINTER;
|
||||
+
|
||||
+ if (FAILED(hr = IDXGIDevice_QueryInterface(device->dxgi_device,
|
||||
+ &IID_ID3D10Device, (void **)&d3d_device)))
|
||||
+ {
|
||||
+ WARN("Failed to query d3d device, hr %#x.\n", hr);
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
+ if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
|
||||
+ {
|
||||
+ ID3D10Device_Release(d3d_device);
|
||||
+ return E_OUTOFMEMORY;
|
||||
+ }
|
||||
+
|
||||
+ hr = d2d_device_context_init(object, iface, options, d3d_device);
|
||||
+ ID3D10Device_Release(d3d_device);
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ HeapFree(GetProcessHeap(), 0, object);
|
||||
+ WARN("Failed to create device context, hr %#x.\n", hr);
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
+ *context = &object->ID2D1DeviceContext_iface;
|
||||
+ TRACE("Created device context %p.\n", object);
|
||||
+
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_CreatePrintControl(ID2D1Device *iface, IWICImagingFactory *wic_factory,
|
||||
diff --git a/dlls/d2d1/device_context.c b/dlls/d2d1/device_context.c
|
||||
index 04da4bf..75d163c 100644
|
||||
--- a/dlls/d2d1/device_context.c
|
||||
+++ b/dlls/d2d1/device_context.c
|
||||
@@ -23,12 +23,6 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d2d);
|
||||
|
||||
-struct d2d_device_context
|
||||
-{
|
||||
- ID2D1DeviceContext ID2D1DeviceContext_iface;
|
||||
- LONG refcount;
|
||||
-};
|
||||
-
|
||||
static inline struct d2d_device_context *impl_from_ID2D1DeviceContext(ID2D1DeviceContext *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, struct d2d_device_context, ID2D1DeviceContext_iface);
|
||||
@@ -39,25 +33,49 @@ static HRESULT WINAPI d2d_device_context_QueryInterface(
|
||||
REFIID riid,
|
||||
void **ppvObject)
|
||||
{
|
||||
- struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("iface %p, riid %s, ppvObject %p.\n", iface, debugstr_guid(riid), ppvObject);
|
||||
+ if (ppvObject == NULL)
|
||||
+ return E_POINTER;
|
||||
+
|
||||
+ if (IsEqualGUID(riid, &IID_ID2D1DeviceContext)
|
||||
+ || IsEqualGUID(riid, &IID_ID2D1RenderTarget)
|
||||
+ || IsEqualGUID(riid, &IID_ID2D1Resource)
|
||||
+ || IsEqualGUID(riid, &IID_IUnknown))
|
||||
+ {
|
||||
+ ID2D1DeviceContext_AddRef(iface);
|
||||
+ *ppvObject = iface;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
|
||||
+ *ppvObject = NULL;
|
||||
+ return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static ULONG WINAPI d2d_device_context_AddRef(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return 0;
|
||||
+ ULONG refcount = InterlockedIncrement(&This->refcount);
|
||||
+ TRACE("%p increasing refcount to %u.\n", iface, refcount);
|
||||
+ return refcount;
|
||||
}
|
||||
|
||||
static ULONG WINAPI d2d_device_context_Release(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return 0;
|
||||
+ ULONG refcount = InterlockedDecrement(&This->refcount);
|
||||
+ TRACE("%p decreasing refcount to %u.\n", iface, refcount);
|
||||
+
|
||||
+ if (refcount == 0)
|
||||
+ {
|
||||
+ ID2D1RenderTarget_Release(This->dxgi_target);
|
||||
+ ID2D1Device_Release(This->device);
|
||||
+ HeapFree(GetProcessHeap(), 0, This);
|
||||
+ }
|
||||
+
|
||||
+ return refcount;
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_GetFactory(
|
||||
@@ -65,7 +83,8 @@ static void WINAPI d2d_device_context_GetFactory(
|
||||
ID2D1Factory **factory)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, factory %p.\n", This, factory);
|
||||
+ ID2D1Device_GetFactory(This->device, factory);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateBitmap(
|
||||
@@ -77,8 +96,8 @@ static HRESULT WINAPI d2d_device_context_CreateBitmap(
|
||||
ID2D1Bitmap **bitmap)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, src_data %p, desc %p, bitmap %p.\n", This, src_data, desc, bitmap);
|
||||
+ return ID2D1RenderTarget_CreateBitmap(This->dxgi_target, size, src_data, pitch, desc, bitmap);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateBitmapFromWicBitmap(
|
||||
@@ -88,8 +107,9 @@ static HRESULT WINAPI d2d_device_context_CreateBitmapFromWicBitmap(
|
||||
ID2D1Bitmap **bitmap)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, bitmap_source %p, desc %p, bitmap %p.\n",
|
||||
+ This, bitmap_source, desc, bitmap);
|
||||
+ return ID2D1RenderTarget_CreateBitmapFromWicBitmap(This->dxgi_target, bitmap_source, desc, bitmap);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateSharedBitmap(
|
||||
@@ -100,8 +120,9 @@ static HRESULT WINAPI d2d_device_context_CreateSharedBitmap(
|
||||
ID2D1Bitmap **bitmap)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, iid %s, data %p, desc %p, bitmap %p.\n",
|
||||
+ This, debugstr_guid(iid), data, desc, bitmap);
|
||||
+ return ID2D1RenderTarget_CreateSharedBitmap(This->dxgi_target, iid, data, desc, bitmap);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateBitmapBrush(
|
||||
@@ -112,8 +133,10 @@ static HRESULT WINAPI d2d_device_context_CreateBitmapBrush(
|
||||
ID2D1BitmapBrush **brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, bitmap %p, bitmap_brush_desc %p, brush_desc %p, brush %p.\n",
|
||||
+ This, bitmap, bitmap_brush_desc, brush_desc, brush);
|
||||
+ return ID2D1RenderTarget_CreateBitmapBrush(This->dxgi_target,
|
||||
+ bitmap, bitmap_brush_desc, brush_desc, brush);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateSolidColorBrush(
|
||||
@@ -123,8 +146,8 @@ static HRESULT WINAPI d2d_device_context_CreateSolidColorBrush(
|
||||
ID2D1SolidColorBrush **brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, color %p, desc %p, brush %p.\n", This, color, desc, brush);
|
||||
+ return ID2D1RenderTarget_CreateSolidColorBrush(This->dxgi_target, color, desc, brush);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateGradientStopCollection(
|
||||
@@ -136,8 +159,9 @@ static HRESULT WINAPI d2d_device_context_CreateGradientStopCollection(
|
||||
ID2D1GradientStopCollection **gradient)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, stops %p, gradient %p.\n", This, stops, gradient);
|
||||
+ return ID2D1RenderTarget_CreateGradientStopCollection(This->dxgi_target,
|
||||
+ stops, stop_count, gamma, extend_mode, gradient);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateLinearGradientBrush(
|
||||
@@ -148,8 +172,10 @@ static HRESULT WINAPI d2d_device_context_CreateLinearGradientBrush(
|
||||
ID2D1LinearGradientBrush **brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, gradient_brush_desc %p, brush_desc %p, gradient %p, brush %p.\n",
|
||||
+ This, gradient_brush_desc, brush_desc, gradient, brush);
|
||||
+ return ID2D1RenderTarget_CreateLinearGradientBrush(This->dxgi_target,
|
||||
+ gradient_brush_desc, brush_desc, gradient, brush);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateRadialGradientBrush(
|
||||
@@ -160,8 +186,10 @@ static HRESULT WINAPI d2d_device_context_CreateRadialGradientBrush(
|
||||
ID2D1RadialGradientBrush **brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, gradient_brush_desc %p, brush_desc %p, gradient %p, brush %p.\n",
|
||||
+ This, gradient_brush_desc, brush_desc, gradient, brush);
|
||||
+ return ID2D1RenderTarget_CreateRadialGradientBrush(This->dxgi_target,
|
||||
+ gradient_brush_desc, brush_desc, gradient, brush);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateCompatibleRenderTarget(
|
||||
@@ -173,8 +201,10 @@ static HRESULT WINAPI d2d_device_context_CreateCompatibleRenderTarget(
|
||||
ID2D1BitmapRenderTarget **render_target)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, size %p, pixel_size %p, format %p, render_target %p.\n",
|
||||
+ This, size, pixel_size, format, render_target);
|
||||
+ return ID2D1RenderTarget_CreateCompatibleRenderTarget(This->dxgi_target,
|
||||
+ size, pixel_size, format, options, render_target);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateLayer(
|
||||
@@ -183,8 +213,8 @@ static HRESULT WINAPI d2d_device_context_CreateLayer(
|
||||
ID2D1Layer **layer)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, size %p, layer %p.\n", This, size, layer);
|
||||
+ return ID2D1RenderTarget_CreateLayer(This->dxgi_target, size, layer);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_CreateMesh(
|
||||
@@ -192,8 +222,8 @@ static HRESULT WINAPI d2d_device_context_CreateMesh(
|
||||
ID2D1Mesh **mesh)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p, mesh %p.\n", This, mesh);
|
||||
+ return ID2D1RenderTarget_CreateMesh(This->dxgi_target, mesh);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawLine(
|
||||
@@ -205,7 +235,8 @@ static void WINAPI d2d_device_context_DrawLine(
|
||||
ID2D1StrokeStyle *stroke_style)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, brush %p, stroke_style %p.\n", This, brush, stroke_style);
|
||||
+ ID2D1RenderTarget_DrawLine(This->dxgi_target, p0, p1, brush, stroke_width, stroke_style);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawRectangle(
|
||||
@@ -216,7 +247,8 @@ static void WINAPI d2d_device_context_DrawRectangle(
|
||||
ID2D1StrokeStyle *stroke_style)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, rect %p, brush %p, stroke_style %p.\n", This, rect, brush, stroke_style);
|
||||
+ ID2D1RenderTarget_DrawRectangle(This->dxgi_target, rect, brush, stroke_width, stroke_style);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_FillRectangle(
|
||||
@@ -225,7 +257,8 @@ static void WINAPI d2d_device_context_FillRectangle(
|
||||
ID2D1Brush *brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, rect %p, brush %p.\n", This, rect, brush);
|
||||
+ ID2D1RenderTarget_FillRectangle(This->dxgi_target, rect, brush);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawRoundedRectangle(
|
||||
@@ -236,7 +269,8 @@ static void WINAPI d2d_device_context_DrawRoundedRectangle(
|
||||
ID2D1StrokeStyle *stroke_style)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, rect %p, brush %p, stroke_style %p.\n", This, rect, brush, stroke_style);
|
||||
+ ID2D1RenderTarget_DrawRoundedRectangle(This->dxgi_target, rect, brush, stroke_width, stroke_style);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_FillRoundedRectangle(
|
||||
@@ -245,7 +279,8 @@ static void WINAPI d2d_device_context_FillRoundedRectangle(
|
||||
ID2D1Brush *brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, rect %p, brush %p.\n", This, rect, brush);
|
||||
+ ID2D1RenderTarget_FillRoundedRectangle(This->dxgi_target, rect, brush);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawEllipse(
|
||||
@@ -256,7 +291,8 @@ static void WINAPI d2d_device_context_DrawEllipse(
|
||||
ID2D1StrokeStyle *stroke_style)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, ellipse %p, brush %p, stroke_style %p.\n", This, ellipse, brush, stroke_style);
|
||||
+ ID2D1RenderTarget_DrawEllipse(This->dxgi_target, ellipse, brush, stroke_width, stroke_style);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_FillEllipse(
|
||||
@@ -265,7 +301,8 @@ static void WINAPI d2d_device_context_FillEllipse(
|
||||
ID2D1Brush *brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, ellipse %p, brush %p.\n", This, ellipse, brush);
|
||||
+ ID2D1RenderTarget_FillEllipse(This->dxgi_target, ellipse, brush);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawGeometry(
|
||||
@@ -276,7 +313,8 @@ static void WINAPI d2d_device_context_DrawGeometry(
|
||||
ID2D1StrokeStyle *stroke_style)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, geometry %p, brush %p, stroke_style %p.\n", This, geometry, brush, stroke_style);
|
||||
+ ID2D1RenderTarget_DrawGeometry(This->dxgi_target, geometry, brush, stroke_width, stroke_style);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_FillGeometry(
|
||||
@@ -286,7 +324,8 @@ static void WINAPI d2d_device_context_FillGeometry(
|
||||
ID2D1Brush *opacity_brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, geometry %p, brush %p, opacity_brush %p.\n", This, geometry, brush, opacity_brush);
|
||||
+ ID2D1RenderTarget_FillGeometry(This->dxgi_target, geometry, brush, opacity_brush);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_FillMesh(
|
||||
@@ -295,7 +334,8 @@ static void WINAPI d2d_device_context_FillMesh(
|
||||
ID2D1Brush *brush)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, mesh %p, brush %p.\n", This, mesh, brush);
|
||||
+ ID2D1RenderTarget_FillMesh(This->dxgi_target, mesh, brush);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_FillOpacityMask(
|
||||
@@ -307,7 +347,9 @@ static void WINAPI d2d_device_context_FillOpacityMask(
|
||||
const D2D1_RECT_F *src_rect)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, mask %p, brush %p.\n", This, mask, brush);
|
||||
+ ID2D1RenderTarget_FillOpacityMask(This->dxgi_target,
|
||||
+ mask, brush, content, dst_rect, src_rect);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawBitmap(
|
||||
@@ -319,7 +361,9 @@ static void WINAPI d2d_device_context_DrawBitmap(
|
||||
const D2D1_RECT_F *src_rect)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, bitmap %p.\n", This, bitmap);
|
||||
+ ID2D1RenderTarget_DrawBitmap(This->dxgi_target,
|
||||
+ bitmap, dst_rect, opacity, interpolation_mode, src_rect);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawText(
|
||||
@@ -333,7 +377,9 @@ static void WINAPI d2d_device_context_DrawText(
|
||||
DWRITE_MEASURING_MODE measuring_mode)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, string %s.\n", This, debugstr_w(string));
|
||||
+ ID2D1RenderTarget_DrawText(This->dxgi_target, string, string_len,
|
||||
+ text_format, layout_rect, brush, options, measuring_mode);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawTextLayout(
|
||||
@@ -344,7 +390,8 @@ static void WINAPI d2d_device_context_DrawTextLayout(
|
||||
D2D1_DRAW_TEXT_OPTIONS options)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, layout %p, brush %p.\n", This, layout, brush);
|
||||
+ ID2D1RenderTarget_DrawTextLayout(This->dxgi_target, origin, layout, brush, options);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_DrawGlyphRun(
|
||||
@@ -355,7 +402,9 @@ static void WINAPI d2d_device_context_DrawGlyphRun(
|
||||
DWRITE_MEASURING_MODE measuring_mode)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, glyph_run %p, brush %p.\n", This, glyph_run, brush);
|
||||
+ ID2D1RenderTarget_DrawGlyphRun(This->dxgi_target,
|
||||
+ baseline_origin, glyph_run, brush, measuring_mode);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetTransform(
|
||||
@@ -363,7 +412,8 @@ static void WINAPI d2d_device_context_SetTransform(
|
||||
const D2D1_MATRIX_3X2_F *transform)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, transform %p.\n", This, transform);
|
||||
+ ID2D1RenderTarget_SetTransform(This->dxgi_target, transform);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_GetTransform(
|
||||
@@ -371,7 +421,8 @@ static void WINAPI d2d_device_context_GetTransform(
|
||||
D2D1_MATRIX_3X2_F *transform)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, transform %p.\n", This, transform);
|
||||
+ ID2D1RenderTarget_GetTransform(This->dxgi_target, transform);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetAntialiasMode(
|
||||
@@ -379,15 +430,16 @@ static void WINAPI d2d_device_context_SetAntialiasMode(
|
||||
D2D1_ANTIALIAS_MODE antialias_mode)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_SetAntialiasMode(This->dxgi_target, antialias_mode);
|
||||
}
|
||||
|
||||
static D2D1_ANTIALIAS_MODE WINAPI d2d_device_context_GetAntialiasMode(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return D2D1_ANTIALIAS_MODE_PER_PRIMITIVE;
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ return ID2D1RenderTarget_GetAntialiasMode(This->dxgi_target);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetTextAntialiasMode(
|
||||
@@ -395,15 +447,16 @@ static void WINAPI d2d_device_context_SetTextAntialiasMode(
|
||||
D2D1_TEXT_ANTIALIAS_MODE antialias_mode)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_SetTextAntialiasMode(This->dxgi_target, antialias_mode);
|
||||
}
|
||||
|
||||
static D2D1_TEXT_ANTIALIAS_MODE WINAPI d2d_device_context_GetTextAntialiasMode(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return D2D1_TEXT_ANTIALIAS_MODE_DEFAULT;
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ return ID2D1RenderTarget_GetTextAntialiasMode(This->dxgi_target);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetTextRenderingParams(
|
||||
@@ -411,7 +464,8 @@ static void WINAPI d2d_device_context_SetTextRenderingParams(
|
||||
IDWriteRenderingParams *text_rendering_params)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_SetTextRenderingParams(This->dxgi_target, text_rendering_params);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_GetTextRenderingParams(
|
||||
@@ -419,7 +473,8 @@ static void WINAPI d2d_device_context_GetTextRenderingParams(
|
||||
IDWriteRenderingParams **text_rendering_params)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_GetTextRenderingParams(This->dxgi_target, text_rendering_params);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetTags(
|
||||
@@ -428,7 +483,8 @@ static void WINAPI d2d_device_context_SetTags(
|
||||
D2D1_TAG tag2)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_SetTags(This->dxgi_target, tag1, tag2);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_GetTags(
|
||||
@@ -437,7 +493,8 @@ static void WINAPI d2d_device_context_GetTags(
|
||||
D2D1_TAG *tag2)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_GetTags(This->dxgi_target, tag1, tag2);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_PushLayer(
|
||||
@@ -446,14 +503,16 @@ static void WINAPI d2d_device_context_PushLayer(
|
||||
ID2D1Layer *layer)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_PushLayer(This->dxgi_target, layer_parameters, layer);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_PopLayer(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_PopLayer(This->dxgi_target);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_Flush(
|
||||
@@ -462,8 +521,8 @@ static HRESULT WINAPI d2d_device_context_Flush(
|
||||
D2D1_TAG *tag2)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ return ID2D1RenderTarget_Flush(This->dxgi_target, tag1, tag2);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SaveDrawingState(
|
||||
@@ -471,7 +530,8 @@ static void WINAPI d2d_device_context_SaveDrawingState(
|
||||
ID2D1DrawingStateBlock *state_block)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, state_block %p.\n", This, state_block);
|
||||
+ ID2D1RenderTarget_SaveDrawingState(This->dxgi_target, state_block);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_RestoreDrawingState(
|
||||
@@ -479,7 +539,8 @@ static void WINAPI d2d_device_context_RestoreDrawingState(
|
||||
ID2D1DrawingStateBlock *state_block)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, state_block %p.\n", This, state_block);
|
||||
+ ID2D1RenderTarget_RestoreDrawingState(This->dxgi_target, state_block);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_PushAxisAlignedClip(
|
||||
@@ -488,14 +549,16 @@ static void WINAPI d2d_device_context_PushAxisAlignedClip(
|
||||
D2D1_ANTIALIAS_MODE antialias_mode)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_PushAxisAlignedClip(This->dxgi_target, clip_rect, antialias_mode);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_PopAxisAlignedClip(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_PopAxisAlignedClip(This->dxgi_target);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_Clear(
|
||||
@@ -503,14 +566,16 @@ static void WINAPI d2d_device_context_Clear(
|
||||
const D2D1_COLOR_F *color)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_Clear(This->dxgi_target, color);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_BeginDraw(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_BeginDraw(This->dxgi_target);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_EndDraw(
|
||||
@@ -519,8 +584,8 @@ static HRESULT WINAPI d2d_device_context_EndDraw(
|
||||
D2D1_TAG *tag2)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return E_NOTIMPL;
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ return ID2D1RenderTarget_EndDraw(This->dxgi_target, tag1, tag2);
|
||||
}
|
||||
|
||||
static D2D1_PIXEL_FORMAT * WINAPI d2d_device_context_GetPixelFormat(
|
||||
@@ -528,8 +593,9 @@ static D2D1_PIXEL_FORMAT * WINAPI d2d_device_context_GetPixelFormat(
|
||||
D2D1_PIXEL_FORMAT *__ret)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return NULL;
|
||||
+ TRACE("This %p, __ret %p.\n", This, __ret);
|
||||
+ *__ret = ID2D1RenderTarget_GetPixelFormat(This->dxgi_target);
|
||||
+ return __ret;
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetDpi(
|
||||
@@ -538,7 +604,8 @@ static void WINAPI d2d_device_context_SetDpi(
|
||||
float dpi_y)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_SetDpi(This->dxgi_target, dpi_x, dpi_y);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_GetDpi(
|
||||
@@ -547,7 +614,8 @@ static void WINAPI d2d_device_context_GetDpi(
|
||||
float *dpi_y)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ ID2D1RenderTarget_GetDpi(This->dxgi_target, dpi_x, dpi_y);
|
||||
}
|
||||
|
||||
static D2D1_SIZE_F * WINAPI d2d_device_context_GetSize(
|
||||
@@ -555,8 +623,9 @@ static D2D1_SIZE_F * WINAPI d2d_device_context_GetSize(
|
||||
D2D1_SIZE_F *__ret)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return NULL;
|
||||
+ TRACE("This %p, __ret %p.\n", This, __ret);
|
||||
+ *__ret = ID2D1RenderTarget_GetSize(This->dxgi_target);
|
||||
+ return __ret;
|
||||
}
|
||||
|
||||
static D2D1_SIZE_U * WINAPI d2d_device_context_GetPixelSize(
|
||||
@@ -564,16 +633,17 @@ static D2D1_SIZE_U * WINAPI d2d_device_context_GetPixelSize(
|
||||
D2D1_SIZE_U *__ret)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return NULL;
|
||||
+ TRACE("This %p, __ret %p.\n", This, __ret);
|
||||
+ *__ret = ID2D1RenderTarget_GetPixelSize(This->dxgi_target);
|
||||
+ return __ret;
|
||||
}
|
||||
|
||||
static UINT32 WINAPI d2d_device_context_GetMaximumBitmapSize(
|
||||
ID2D1DeviceContext *iface)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return 0;
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ return ID2D1RenderTarget_GetMaximumBitmapSize(This->dxgi_target);
|
||||
}
|
||||
|
||||
static BOOL WINAPI d2d_device_context_IsSupported(
|
||||
@@ -581,8 +651,8 @@ static BOOL WINAPI d2d_device_context_IsSupported(
|
||||
const D2D1_RENDER_TARGET_PROPERTIES *desc)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
- return FALSE;
|
||||
+ TRACE("This %p.\n", This);
|
||||
+ return ID2D1RenderTarget_IsSupported(This->dxgi_target, desc);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d2d_device_context_ID2D1DeviceContext_CreateBitmap(
|
||||
@@ -765,7 +835,12 @@ static void WINAPI d2d_device_context_GetDevice(
|
||||
ID2D1Device **device)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ TRACE("This %p, device %p.\n", This, device);
|
||||
+ if (device == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ ID2D1Device_AddRef(This->device);
|
||||
+ *device = This->device;
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_SetTarget(
|
||||
@@ -773,7 +848,34 @@ static void WINAPI d2d_device_context_SetTarget(
|
||||
ID2D1Image *target)
|
||||
{
|
||||
struct d2d_device_context *This = impl_from_ID2D1DeviceContext(iface);
|
||||
- FIXME("%p stub!\n", This);
|
||||
+ IDXGISurface *surface;
|
||||
+ IDXGISurface1 *surface1;
|
||||
+ ID2D1Bitmap1 *bitmap;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ TRACE("This %p, target %p.\n", This, target);
|
||||
+ if (FAILED(hr = ID2D1Image_QueryInterface(target, &IID_ID2D1Bitmap1, (void **)&bitmap)))
|
||||
+ {
|
||||
+ FIXME("Provided ID2D1Image type not yet supported, hr %#x.\n", hr);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ID2D1Bitmap1_GetSurface(bitmap, &surface);
|
||||
+ ID2D1Bitmap1_Release(bitmap);
|
||||
+ hr = IDXGISurface_QueryInterface(surface, &IID_IDXGISurface1, (void **)&surface1);
|
||||
+ IDXGISurface_Release(surface);
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ WARN("Failed to query IDXGISurface1, hr %#x.\n", hr);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (FAILED(d2d_d3d_render_target_create_rtv(This->dxgi_target, surface1)))
|
||||
+ {
|
||||
+ WARN("Failed to set renderviewtarget, hr %#x.\n", hr);
|
||||
+ }
|
||||
+
|
||||
+ IDXGISurface1_Release(surface1);
|
||||
}
|
||||
|
||||
static void WINAPI d2d_device_context_GetTarget(
|
||||
@@ -1038,3 +1140,41 @@ static const struct ID2D1DeviceContextVtbl d2d_device_context_vtbl =
|
||||
d2d_device_context_GetEffectRequiredInputRectangles,
|
||||
d2d_device_context_ID2D1DeviceContext_FillOpacityMask,
|
||||
};
|
||||
+
|
||||
+HRESULT d2d_device_context_init(struct d2d_device_context *This,
|
||||
+ ID2D1Device *device_iface, D2D1_DEVICE_CONTEXT_OPTIONS options,
|
||||
+ ID3D10Device *d3d_device)
|
||||
+{
|
||||
+ HRESULT hr;
|
||||
+ ID2D1Factory *factory;
|
||||
+ D2D1_RENDER_TARGET_PROPERTIES desc;
|
||||
+ desc.type = D2D1_RENDER_TARGET_TYPE_DEFAULT;
|
||||
+ desc.pixelFormat.format = DXGI_FORMAT_UNKNOWN;
|
||||
+ desc.pixelFormat.alphaMode = D2D1_ALPHA_MODE_UNKNOWN;
|
||||
+ desc.dpiX = 96.0f;
|
||||
+ desc.dpiY = 96.0f;
|
||||
+ desc.usage = D2D1_RENDER_TARGET_USAGE_NONE;
|
||||
+ desc.minLevel = D2D1_FEATURE_LEVEL_DEFAULT;
|
||||
+
|
||||
+ if (options == D2D1_DEVICE_CONTEXT_OPTIONS_ENABLE_MULTITHREADED_OPTIMIZATIONS)
|
||||
+ FIXME("D2D1_DEVICE_CONTEXT_OPTIONS ignored.");
|
||||
+
|
||||
+ This->ID2D1DeviceContext_iface.lpVtbl = &d2d_device_context_vtbl;
|
||||
+ This->refcount = 1;
|
||||
+ This->device = device_iface;
|
||||
+
|
||||
+ ID2D1Device_GetFactory(This->device, &factory);
|
||||
+ hr = d2d_d3d_create_render_target_with_device(factory, d3d_device,
|
||||
+ (IUnknown *)&This->ID2D1DeviceContext_iface,
|
||||
+ &desc, &This->dxgi_target);
|
||||
+ ID2D1Factory_Release(factory);
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ WARN("Failed to create base render target, hr %#x.\n", hr);
|
||||
+ return hr;
|
||||
+ }
|
||||
+
|
||||
+ ID2D1Device_AddRef(This->device);
|
||||
+
|
||||
+ return S_OK;
|
||||
+}
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,12 +1,12 @@
|
||||
From a93e855c484c622efedfe9696eac72c32007621d Mon Sep 17 00:00:00 2001
|
||||
From 04bb8bf7196efb6f7c0a3c5f7524ac8aefc645b6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 7 Oct 2017 00:52:34 +0200
|
||||
Subject: wined3d: Add support for depth bias clamping.
|
||||
|
||||
---
|
||||
dlls/d3d11/device.c | 5 ++++-
|
||||
dlls/wined3d/adapter_gl.c | 3 +++
|
||||
dlls/wined3d/cs.c | 1 +
|
||||
dlls/wined3d/directx.c | 3 +++
|
||||
dlls/wined3d/state.c | 17 +++++++++++++++--
|
||||
dlls/wined3d/stateblock.c | 2 ++
|
||||
dlls/wined3d/utils.c | 1 +
|
||||
@ -15,10 +15,10 @@ Subject: wined3d: Add support for depth bias clamping.
|
||||
8 files changed, 29 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
|
||||
index 68d6cf0..9854906 100644
|
||||
index e6ba31c..f0ff7b3 100644
|
||||
--- a/dlls/d3d11/device.c
|
||||
+++ b/dlls/d3d11/device.c
|
||||
@@ -920,7 +920,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
|
||||
@@ -933,7 +933,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
|
||||
{
|
||||
DWORD d;
|
||||
float f;
|
||||
@ -27,7 +27,7 @@ index 68d6cf0..9854906 100644
|
||||
|
||||
TRACE("iface %p, rasterizer_state %p.\n", iface, rasterizer_state);
|
||||
|
||||
@@ -932,6 +932,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
|
||||
@@ -945,6 +945,7 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_CULLMODE, WINED3D_CULL_BACK);
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SLOPESCALEDEPTHBIAS, 0);
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_DEPTHBIAS, 0);
|
||||
@ -35,7 +35,7 @@ index 68d6cf0..9854906 100644
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SCISSORTESTENABLE, FALSE);
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_MULTISAMPLEANTIALIAS, FALSE);
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_ANTIALIASEDLINEENABLE, FALSE);
|
||||
@@ -946,8 +947,10 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
|
||||
@@ -959,8 +960,10 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_RSSetState(ID3D11DeviceCon
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_CULLMODE, desc->CullMode);
|
||||
scale_bias.f = desc->SlopeScaledDepthBias;
|
||||
const_bias.f = desc->DepthBias;
|
||||
@ -46,23 +46,11 @@ index 68d6cf0..9854906 100644
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_SCISSORTESTENABLE, desc->ScissorEnable);
|
||||
wined3d_device_set_render_state(device->wined3d_device, WINED3D_RS_MULTISAMPLEANTIALIAS, desc->MultisampleEnable);
|
||||
wined3d_device_set_render_state(device->wined3d_device,
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index 3f1ca8c..aea2cdf 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -1065,6 +1065,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const
|
||||
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILENABLE));
|
||||
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILWRITEMASK));
|
||||
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIAS));
|
||||
+ device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIASCLAMP));
|
||||
}
|
||||
else if (prev && prev->format->depth_bias_scale != op->view->format->depth_bias_scale)
|
||||
{
|
||||
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
index a4e4a0c..e595da5 100644
|
||||
--- a/dlls/wined3d/directx.c
|
||||
+++ b/dlls/wined3d/directx.c
|
||||
@@ -233,6 +233,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
|
||||
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
|
||||
index 686c79a..dc49c88 100644
|
||||
--- a/dlls/wined3d/adapter_gl.c
|
||||
+++ b/dlls/wined3d/adapter_gl.c
|
||||
@@ -180,6 +180,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
|
||||
{"GL_EXT_packed_depth_stencil", EXT_PACKED_DEPTH_STENCIL },
|
||||
{"GL_EXT_packed_float", EXT_PACKED_FLOAT },
|
||||
{"GL_EXT_point_parameters", EXT_POINT_PARAMETERS },
|
||||
@ -70,7 +58,7 @@ index a4e4a0c..e595da5 100644
|
||||
{"GL_EXT_provoking_vertex", EXT_PROVOKING_VERTEX },
|
||||
{"GL_EXT_secondary_color", EXT_SECONDARY_COLOR },
|
||||
{"GL_EXT_stencil_two_side", EXT_STENCIL_TWO_SIDE },
|
||||
@@ -3117,6 +3118,8 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
|
||||
@@ -2473,6 +2474,8 @@ static void load_gl_funcs(struct wined3d_gl_info *gl_info)
|
||||
/* GL_EXT_point_parameters */
|
||||
USE_GL_FUNC(glPointParameterfEXT)
|
||||
USE_GL_FUNC(glPointParameterfvEXT)
|
||||
@ -79,6 +67,18 @@ index a4e4a0c..e595da5 100644
|
||||
/* GL_EXT_provoking_vertex */
|
||||
USE_GL_FUNC(glProvokingVertexEXT)
|
||||
/* GL_EXT_secondary_color */
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index d6bc739..515982c 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -1124,6 +1124,7 @@ static void wined3d_cs_exec_set_depth_stencil_view(struct wined3d_cs *cs, const
|
||||
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILENABLE));
|
||||
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_STENCILWRITEMASK));
|
||||
device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIAS));
|
||||
+ device_invalidate_state(device, STATE_RENDER(WINED3D_RS_DEPTHBIASCLAMP));
|
||||
}
|
||||
else if (prev && prev->format->depth_bias_scale != op->view->format->depth_bias_scale)
|
||||
{
|
||||
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
|
||||
index 3b2f845..2dd6ac2 100644
|
||||
--- a/dlls/wined3d/state.c
|
||||
@ -138,10 +138,10 @@ index b4d1751..093c740 100644
|
||||
state->render_states[WINED3D_RS_WRAP9] = 0;
|
||||
state->render_states[WINED3D_RS_WRAP10] = 0;
|
||||
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
|
||||
index 7cecd8c..0152879 100644
|
||||
index 861f169..b46f67f 100644
|
||||
--- a/dlls/wined3d/utils.c
|
||||
+++ b/dlls/wined3d/utils.c
|
||||
@@ -4425,6 +4425,7 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
|
||||
@@ -4652,6 +4652,7 @@ const char *debug_d3drenderstate(enum wined3d_render_state state)
|
||||
D3DSTATE_TO_STR(WINED3D_RS_BLENDFACTOR);
|
||||
D3DSTATE_TO_STR(WINED3D_RS_SRGBWRITEENABLE);
|
||||
D3DSTATE_TO_STR(WINED3D_RS_DEPTHBIAS);
|
||||
@ -162,10 +162,10 @@ index 525c298..883faaa 100644
|
||||
EXT_SECONDARY_COLOR,
|
||||
EXT_STENCIL_TWO_SIDE,
|
||||
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
|
||||
index bb4ad48..4a5d0dd 100644
|
||||
index 239ccd8..884e824 100644
|
||||
--- a/include/wine/wined3d.h
|
||||
+++ b/include/wine/wined3d.h
|
||||
@@ -386,8 +386,9 @@ enum wined3d_render_state
|
||||
@@ -399,8 +399,9 @@ enum wined3d_render_state
|
||||
WINED3D_RS_SRCBLENDALPHA = 207,
|
||||
WINED3D_RS_DESTBLENDALPHA = 208,
|
||||
WINED3D_RS_BLENDOPALPHA = 209,
|
||||
|
@ -1,2 +1 @@
|
||||
Fixes: Implement support for more d3d11 depth options in RSSetState.
|
||||
Fixes: [43848] Implement support for depth bias clamping
|
||||
|
@ -1,4 +1,4 @@
|
||||
From aa4d3f847be7541b846438956ca988d3456054b2 Mon Sep 17 00:00:00 2001
|
||||
From 29ecd040a4524a81da6127c59dbb601c88dde1da Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 15 Jan 2016 13:17:31 +0100
|
||||
Subject: ntdll: Add stub for ApiSetQueryApiSetPresence.
|
||||
@ -17,12 +17,12 @@ index 6d63b5b..1d99dd7 100644
|
||||
-@ stub ApiSetQueryApiSetPresence
|
||||
+@ stdcall ApiSetQueryApiSetPresence(ptr ptr) ntdll.ApiSetQueryApiSetPresence
|
||||
diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c
|
||||
index 88e8b33..85b0e32 100644
|
||||
index 2431662..c84b004 100644
|
||||
--- a/dlls/ntdll/misc.c
|
||||
+++ b/dlls/ntdll/misc.c
|
||||
@@ -484,3 +484,14 @@ void WINAPI DbgUiRemoteBreakin( void *arg )
|
||||
{
|
||||
FIXME("stub\n");
|
||||
@@ -504,3 +504,14 @@ NTSTATUS WINAPI NtCreateLowBoxToken(HANDLE *token_handle, HANDLE existing_token_
|
||||
*token_handle = NULL;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
+
|
||||
+/*********************************************************************
|
||||
@ -36,7 +36,7 @@ index 88e8b33..85b0e32 100644
|
||||
+ return TRUE;
|
||||
+}
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index c260b0d..01836a3 100644
|
||||
index 003e4f9..5e7c463 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -3,6 +3,7 @@
|
||||
|
@ -52,7 +52,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "ccf6211c0ae6e86218f7e6c1f2fe725a23e568b9"
|
||||
echo "c698682b3286d72cc7c4c4624b4d14b03dbe6908"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -296,6 +296,7 @@ patch_enable_all ()
|
||||
enable_server_device_manager_destroy="$1"
|
||||
enable_server_send_hardware_message="$1"
|
||||
enable_setupapi_DiskSpaceList="$1"
|
||||
enable_setupapi_Display_Device="$1"
|
||||
enable_setupapi_HSPFILEQ_Check_Type="$1"
|
||||
enable_setupapi_SPFILENOTIFY_FILEINCABINET="$1"
|
||||
enable_setupapi_SP_COPY_IN_USE_NEEDS_REBOOT="$1"
|
||||
@ -1064,6 +1065,9 @@ patch_enable ()
|
||||
setupapi-DiskSpaceList)
|
||||
enable_setupapi_DiskSpaceList="$2"
|
||||
;;
|
||||
setupapi-Display_Device)
|
||||
enable_setupapi_Display_Device="$2"
|
||||
;;
|
||||
setupapi-HSPFILEQ_Check_Type)
|
||||
enable_setupapi_HSPFILEQ_Check_Type="$2"
|
||||
;;
|
||||
@ -2842,17 +2846,12 @@ fi
|
||||
# | * [#44052] - Add ID2D1Bitmap1/ID2D1Factory1 support
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d2d1/Makefile.in, dlls/d2d1/d2d1_private.h, dlls/d2d1/device.c, dlls/d2d1/device_context.c, dlls/d2d1/factory.c,
|
||||
# | dlls/d2d1/geometry.c
|
||||
# | * dlls/d2d1/d2d1_private.h, dlls/d2d1/factory.c, dlls/d2d1/geometry.c
|
||||
# |
|
||||
if test "$enable_d2d1_ID2D1Factory1" -eq 1; then
|
||||
patch_apply d2d1-ID2D1Factory1/0003-d2d1-Use-ID2D1Factory1-in-d2d_geometry.patch
|
||||
patch_apply d2d1-ID2D1Factory1/0005-d2d1-Stub-ID2D1DeviceContext.patch
|
||||
patch_apply d2d1-ID2D1Factory1/0006-d2d1-Implement-ID2D1DeviceContext.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Lucian Poston", "d2d1: Use ID2D1Factory1 in d2d_geometry.", 1 },';
|
||||
printf '%s\n' '+ { "Lucian Poston", "d2d1: Stub ID2D1DeviceContext.", 1 },';
|
||||
printf '%s\n' '+ { "Lucian Poston", "d2d1: Implement ID2D1DeviceContext.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
@ -3061,7 +3060,7 @@ fi
|
||||
# | * [#43848] Implement support for depth bias clamping
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d10core/tests/device.c, dlls/d3d11/device.c, dlls/wined3d/cs.c, dlls/wined3d/directx.c, dlls/wined3d/state.c,
|
||||
# | * dlls/d3d10core/tests/device.c, dlls/d3d11/device.c, dlls/wined3d/adapter_gl.c, dlls/wined3d/cs.c, dlls/wined3d/state.c,
|
||||
# | dlls/wined3d/stateblock.c, dlls/wined3d/utils.c, dlls/wined3d/wined3d_gl.h, include/wine/wined3d.h
|
||||
# |
|
||||
if test "$enable_d3d11_Depth_Bias" -eq 1; then
|
||||
@ -6263,6 +6262,25 @@ if test "$enable_setupapi_DiskSpaceList" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset setupapi-Display_Device
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#35345] Fix enumeration of display driver properties using setupapi
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/setupapi/devinst.c, dlls/setupapi/tests/devinst.c, loader/wine.inf.in
|
||||
# |
|
||||
if test "$enable_setupapi_Display_Device" -eq 1; then
|
||||
patch_apply setupapi-Display_Device/0001-setupapi-Create-registry-keys-for-display-devices-an.patch
|
||||
patch_apply setupapi-Display_Device/0002-setupapi-Handle-the-case-that-a-full-driver-path-is-.patch
|
||||
patch_apply setupapi-Display_Device/0003-setupapi-Also-create-HardwareId-registry-key-for-dis.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael Müller", "setupapi: Create registry keys for display devices and display drivers.", 1 },';
|
||||
printf '%s\n' '+ { "Michael Müller", "setupapi: Handle the case that a full driver path is passed to SetupDiGetClassDevs.", 1 },';
|
||||
printf '%s\n' '+ { "Sebastian Lackner", "setupapi: Also create HardwareId registry key for display devices.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset setupapi-HSPFILEQ_Check_Type
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -7539,7 +7557,8 @@ fi
|
||||
# Patchset wined3d-Accounting
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d9/tests/device.c, dlls/wined3d/device.c, dlls/wined3d/directx.c, dlls/wined3d/wined3d_gl.h
|
||||
# | * dlls/d3d9/tests/device.c, dlls/wined3d/adapter_gl.c, dlls/wined3d/device.c, dlls/wined3d/directx.c,
|
||||
# | dlls/wined3d/wined3d_gl.h
|
||||
# |
|
||||
if test "$enable_wined3d_Accounting" -eq 1; then
|
||||
patch_apply wined3d-Accounting/0001-wined3d-Use-real-values-for-memory-accounting-on-NVI.patch
|
||||
@ -7551,7 +7570,7 @@ fi
|
||||
# Patchset wined3d-Dual_Source_Blending
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/d3d11/tests/d3d11.c, dlls/wined3d/context.c, dlls/wined3d/directx.c, dlls/wined3d/glsl_shader.c,
|
||||
# | * dlls/d3d11/tests/d3d11.c, dlls/wined3d/adapter_gl.c, dlls/wined3d/context.c, dlls/wined3d/glsl_shader.c,
|
||||
# | dlls/wined3d/shader.c, dlls/wined3d/state.c, dlls/wined3d/wined3d_private.h
|
||||
# |
|
||||
if test "$enable_wined3d_Dual_Source_Blending" -eq 1; then
|
||||
@ -7685,7 +7704,7 @@ fi
|
||||
# | * [#42538] Add check for GL_VENDOR = "Brian Paul" to detect Mesa
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/wined3d/directx.c
|
||||
# | * dlls/wined3d/adapter_gl.c
|
||||
# |
|
||||
if test "$enable_wined3d_wined3d_guess_gl_vendor" -eq 1; then
|
||||
patch_apply wined3d-wined3d_guess_gl_vendor/0001-wined3d-Also-check-for-Brian-Paul-to-detect-Mesa-gl_.patch
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 1544a5022eee2874dcf492fc9c863ce21344a572 Mon Sep 17 00:00:00 2001
|
||||
From 18631bae9b0750d47ce23a4164e49b7ae1f3fe31 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 4 Dec 2015 10:36:47 +0100
|
||||
Subject: server: Introduce a new alloc_handle object callback. (v2)
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
|
||||
34 files changed, 75 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/server/async.c b/server/async.c
|
||||
index cf7a434ebca..9c7b9943975 100644
|
||||
index adbadc5..7f7b255 100644
|
||||
--- a/server/async.c
|
||||
+++ b/server/async.c
|
||||
@@ -78,6 +78,7 @@ static const struct object_ops async_ops =
|
||||
@ -53,7 +53,7 @@ index cf7a434ebca..9c7b9943975 100644
|
||||
no_close_handle, /* close_handle */
|
||||
async_destroy /* destroy */
|
||||
};
|
||||
@@ -459,6 +460,7 @@ static const struct object_ops iosb_ops =
|
||||
@@ -461,6 +462,7 @@ static const struct object_ops iosb_ops =
|
||||
no_link_name, /* link_name */
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
@ -62,7 +62,7 @@ index cf7a434ebca..9c7b9943975 100644
|
||||
iosb_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/atom.c b/server/atom.c
|
||||
index 3ff75407d9f..7bebf136a21 100644
|
||||
index 3ff7540..7bebf13 100644
|
||||
--- a/server/atom.c
|
||||
+++ b/server/atom.c
|
||||
@@ -90,6 +90,7 @@ static const struct object_ops atom_table_ops =
|
||||
@ -74,7 +74,7 @@ index 3ff75407d9f..7bebf136a21 100644
|
||||
atom_table_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/change.c b/server/change.c
|
||||
index c5c88da58dd..49d577a44de 100644
|
||||
index 1f2f7c5..441c510 100644
|
||||
--- a/server/change.c
|
||||
+++ b/server/change.c
|
||||
@@ -172,6 +172,7 @@ static const struct object_ops dir_ops =
|
||||
@ -86,7 +86,7 @@ index c5c88da58dd..49d577a44de 100644
|
||||
dir_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/clipboard.c b/server/clipboard.c
|
||||
index 160eb46959d..70b7e325380 100644
|
||||
index 160eb46..70b7e32 100644
|
||||
--- a/server/clipboard.c
|
||||
+++ b/server/clipboard.c
|
||||
@@ -87,6 +87,7 @@ static const struct object_ops clipboard_ops =
|
||||
@ -98,7 +98,7 @@ index 160eb46959d..70b7e325380 100644
|
||||
clipboard_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/completion.c b/server/completion.c
|
||||
index 8b8983a157f..72dbc5b821f 100644
|
||||
index 8b8983a..72dbc5b 100644
|
||||
--- a/server/completion.c
|
||||
+++ b/server/completion.c
|
||||
@@ -75,6 +75,7 @@ static const struct object_ops completion_ops =
|
||||
@ -110,7 +110,7 @@ index 8b8983a157f..72dbc5b821f 100644
|
||||
completion_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/console.c b/server/console.c
|
||||
index cb6410b7741..89909c3569a 100644
|
||||
index e1ae086..d9c60f9 100644
|
||||
--- a/server/console.c
|
||||
+++ b/server/console.c
|
||||
@@ -87,6 +87,7 @@ static const struct object_ops console_input_ops =
|
||||
@ -138,7 +138,7 @@ index cb6410b7741..89909c3569a 100644
|
||||
screen_buffer_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/debugger.c b/server/debugger.c
|
||||
index 79b7e527f33..d658fc0625f 100644
|
||||
index 79b7e52..d658fc0 100644
|
||||
--- a/server/debugger.c
|
||||
+++ b/server/debugger.c
|
||||
@@ -84,6 +84,7 @@ static const struct object_ops debug_event_ops =
|
||||
@ -158,7 +158,7 @@ index 79b7e527f33..d658fc0625f 100644
|
||||
debug_ctx_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/device.c b/server/device.c
|
||||
index 90a4b6e8eec..4bb29d897e5 100644
|
||||
index dcc2946..47fe000 100644
|
||||
--- a/server/device.c
|
||||
+++ b/server/device.c
|
||||
@@ -75,6 +75,7 @@ static const struct object_ops irp_call_ops =
|
||||
@ -194,7 +194,7 @@ index 90a4b6e8eec..4bb29d897e5 100644
|
||||
device_file_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/directory.c b/server/directory.c
|
||||
index 7ffaedc4623..d903ff283c0 100644
|
||||
index 7ffaedc..d903ff2 100644
|
||||
--- a/server/directory.c
|
||||
+++ b/server/directory.c
|
||||
@@ -67,6 +67,7 @@ static const struct object_ops object_type_ops =
|
||||
@ -214,7 +214,7 @@ index 7ffaedc4623..d903ff283c0 100644
|
||||
directory_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/event.c b/server/event.c
|
||||
index cfc0f6afc0d..608fafb94d7 100644
|
||||
index cfc0f6a..608fafb 100644
|
||||
--- a/server/event.c
|
||||
+++ b/server/event.c
|
||||
@@ -68,6 +68,7 @@ static const struct object_ops event_ops =
|
||||
@ -234,7 +234,7 @@ index cfc0f6afc0d..608fafb94d7 100644
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/fd.c b/server/fd.c
|
||||
index fa2b18a46b1..9dbf481259c 100644
|
||||
index 6118f52..9dc953f 100644
|
||||
--- a/server/fd.c
|
||||
+++ b/server/fd.c
|
||||
@@ -217,6 +217,7 @@ static const struct object_ops fd_ops =
|
||||
@ -270,7 +270,7 @@ index fa2b18a46b1..9dbf481259c 100644
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/file.c b/server/file.c
|
||||
index 6c036acb641..a7d8f95d972 100644
|
||||
index 446621a..cbfc257 100644
|
||||
--- a/server/file.c
|
||||
+++ b/server/file.c
|
||||
@@ -95,6 +95,7 @@ static const struct object_ops file_ops =
|
||||
@ -282,7 +282,7 @@ index 6c036acb641..a7d8f95d972 100644
|
||||
file_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/handle.c b/server/handle.c
|
||||
index 35ab8607c85..782baefaaa0 100644
|
||||
index 35ab860..782baef 100644
|
||||
--- a/server/handle.c
|
||||
+++ b/server/handle.c
|
||||
@@ -133,6 +133,7 @@ static const struct object_ops handle_table_ops =
|
||||
@ -327,7 +327,7 @@ index 35ab8607c85..782baefaaa0 100644
|
||||
}
|
||||
}
|
||||
diff --git a/server/hook.c b/server/hook.c
|
||||
index 3a0e4b4d1d3..dc653b8c42e 100644
|
||||
index 3a0e4b4..dc653b8 100644
|
||||
--- a/server/hook.c
|
||||
+++ b/server/hook.c
|
||||
@@ -91,6 +91,7 @@ static const struct object_ops hook_table_ops =
|
||||
@ -339,7 +339,7 @@ index 3a0e4b4d1d3..dc653b8c42e 100644
|
||||
hook_table_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/mailslot.c b/server/mailslot.c
|
||||
index 9fafedbd204..531c9928e2f 100644
|
||||
index f4c7007..bc169dd 100644
|
||||
--- a/server/mailslot.c
|
||||
+++ b/server/mailslot.c
|
||||
@@ -89,6 +89,7 @@ static const struct object_ops mailslot_ops =
|
||||
@ -350,7 +350,7 @@ index 9fafedbd204..531c9928e2f 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
mailslot_destroy /* destroy */
|
||||
};
|
||||
@@ -144,6 +145,7 @@ static const struct object_ops mail_writer_ops =
|
||||
@@ -145,6 +146,7 @@ static const struct object_ops mail_writer_ops =
|
||||
no_link_name, /* link_name */
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
@ -358,7 +358,7 @@ index 9fafedbd204..531c9928e2f 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
mail_writer_destroy /* destroy */
|
||||
};
|
||||
@@ -200,6 +202,7 @@ static const struct object_ops mailslot_device_ops =
|
||||
@@ -202,6 +204,7 @@ static const struct object_ops mailslot_device_ops =
|
||||
directory_link_name, /* link_name */
|
||||
default_unlink_name, /* unlink_name */
|
||||
mailslot_device_open_file, /* open_file */
|
||||
@ -367,7 +367,7 @@ index 9fafedbd204..531c9928e2f 100644
|
||||
mailslot_device_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/mapping.c b/server/mapping.c
|
||||
index f9f50edfa60..095cb03d7fb 100644
|
||||
index 1ed8c9d..8bfaa8e 100644
|
||||
--- a/server/mapping.c
|
||||
+++ b/server/mapping.c
|
||||
@@ -77,6 +77,7 @@ static const struct object_ops ranges_ops =
|
||||
@ -386,7 +386,7 @@ index f9f50edfa60..095cb03d7fb 100644
|
||||
no_close_handle, /* close_handle */
|
||||
shared_map_destroy /* destroy */
|
||||
};
|
||||
@@ -167,6 +169,7 @@ static const struct object_ops mapping_ops =
|
||||
@@ -166,6 +168,7 @@ static const struct object_ops mapping_ops =
|
||||
directory_link_name, /* link_name */
|
||||
default_unlink_name, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
@ -395,7 +395,7 @@ index f9f50edfa60..095cb03d7fb 100644
|
||||
mapping_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/mutex.c b/server/mutex.c
|
||||
index d1887e4bc45..a2a0a24bdc3 100644
|
||||
index d1887e4..a2a0a24 100644
|
||||
--- a/server/mutex.c
|
||||
+++ b/server/mutex.c
|
||||
@@ -71,6 +71,7 @@ static const struct object_ops mutex_ops =
|
||||
@ -407,10 +407,10 @@ index d1887e4bc45..a2a0a24bdc3 100644
|
||||
mutex_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/named_pipe.c b/server/named_pipe.c
|
||||
index 6f5b3b0bbd5..d7f8a583c92 100644
|
||||
index ba6f507..215c838 100644
|
||||
--- a/server/named_pipe.c
|
||||
+++ b/server/named_pipe.c
|
||||
@@ -136,6 +136,7 @@ static const struct object_ops named_pipe_ops =
|
||||
@@ -128,6 +128,7 @@ static const struct object_ops named_pipe_ops =
|
||||
named_pipe_link_name, /* link_name */
|
||||
default_unlink_name, /* unlink_name */
|
||||
named_pipe_open_file, /* open_file */
|
||||
@ -418,7 +418,7 @@ index 6f5b3b0bbd5..d7f8a583c92 100644
|
||||
no_close_handle, /* close_handle */
|
||||
named_pipe_destroy /* destroy */
|
||||
};
|
||||
@@ -173,6 +174,7 @@ static const struct object_ops pipe_server_ops =
|
||||
@@ -169,6 +170,7 @@ static const struct object_ops pipe_server_ops =
|
||||
no_link_name, /* link_name */
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
@ -426,15 +426,15 @@ index 6f5b3b0bbd5..d7f8a583c92 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
pipe_server_destroy /* destroy */
|
||||
};
|
||||
@@ -216,6 +218,7 @@ static const struct object_ops pipe_client_ops =
|
||||
@@ -210,6 +212,7 @@ static const struct object_ops pipe_client_ops =
|
||||
no_link_name, /* link_name */
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
+ no_alloc_handle, /* alloc_handle */
|
||||
fd_close_handle, /* close_handle */
|
||||
pipe_client_destroy /* destroy */
|
||||
pipe_end_destroy /* destroy */
|
||||
};
|
||||
@@ -263,6 +266,7 @@ static const struct object_ops named_pipe_device_ops =
|
||||
@@ -258,6 +261,7 @@ static const struct object_ops named_pipe_device_ops =
|
||||
directory_link_name, /* link_name */
|
||||
default_unlink_name, /* unlink_name */
|
||||
named_pipe_device_open_file, /* open_file */
|
||||
@ -443,7 +443,7 @@ index 6f5b3b0bbd5..d7f8a583c92 100644
|
||||
named_pipe_device_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/object.c b/server/object.c
|
||||
index 4455718aac3..14cd38e6f7e 100644
|
||||
index 4455718..14cd38e 100644
|
||||
--- a/server/object.c
|
||||
+++ b/server/object.c
|
||||
@@ -692,6 +692,10 @@ struct object *no_open_file( struct object *obj, unsigned int access, unsigned i
|
||||
@ -458,7 +458,7 @@ index 4455718aac3..14cd38e6f7e 100644
|
||||
{
|
||||
return 1; /* ok to close */
|
||||
diff --git a/server/object.h b/server/object.h
|
||||
index b5c50e1cee8..72ad8528c5a 100644
|
||||
index b5c50e1..72ad852 100644
|
||||
--- a/server/object.h
|
||||
+++ b/server/object.h
|
||||
@@ -89,8 +89,10 @@ struct object_ops
|
||||
@ -482,7 +482,7 @@ index b5c50e1cee8..72ad8528c5a 100644
|
||||
extern void no_destroy( struct object *obj );
|
||||
#ifdef DEBUG_OBJECTS
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index f8739d00b64..c269b50c313 100644
|
||||
index f8739d0..c269b50 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -84,6 +84,7 @@ static const struct object_ops process_ops =
|
||||
@ -510,7 +510,7 @@ index f8739d00b64..c269b50c313 100644
|
||||
job_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index c479b388bd6..382f14f12d1 100644
|
||||
index c479b38..382f14f 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -181,6 +181,7 @@ static const struct object_ops msg_queue_ops =
|
||||
@ -530,7 +530,7 @@ index c479b388bd6..382f14f12d1 100644
|
||||
thread_input_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/registry.c b/server/registry.c
|
||||
index 734a1115b21..6294aa36f03 100644
|
||||
index 8ad97d4..50b6a0b 100644
|
||||
--- a/server/registry.c
|
||||
+++ b/server/registry.c
|
||||
@@ -170,6 +170,7 @@ static const struct object_ops key_ops =
|
||||
@ -542,7 +542,7 @@ index 734a1115b21..6294aa36f03 100644
|
||||
key_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/request.c b/server/request.c
|
||||
index 6120bc550ff..83e608917f8 100644
|
||||
index 6120bc5..83e6089 100644
|
||||
--- a/server/request.c
|
||||
+++ b/server/request.c
|
||||
@@ -107,6 +107,7 @@ static const struct object_ops master_socket_ops =
|
||||
@ -554,7 +554,7 @@ index 6120bc550ff..83e608917f8 100644
|
||||
master_socket_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/semaphore.c b/server/semaphore.c
|
||||
index 08ff1536cee..15e73925131 100644
|
||||
index 08ff153..15e7392 100644
|
||||
--- a/server/semaphore.c
|
||||
+++ b/server/semaphore.c
|
||||
@@ -68,6 +68,7 @@ static const struct object_ops semaphore_ops =
|
||||
@ -566,7 +566,7 @@ index 08ff1536cee..15e73925131 100644
|
||||
no_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/serial.c b/server/serial.c
|
||||
index f7aaebbaf69..94b29c4eef2 100644
|
||||
index bb976a1..089f47c 100644
|
||||
--- a/server/serial.c
|
||||
+++ b/server/serial.c
|
||||
@@ -102,6 +102,7 @@ static const struct object_ops serial_ops =
|
||||
@ -578,7 +578,7 @@ index f7aaebbaf69..94b29c4eef2 100644
|
||||
serial_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/signal.c b/server/signal.c
|
||||
index 74416fab7be..4b2b8c4a15e 100644
|
||||
index 74416fa..4b2b8c4 100644
|
||||
--- a/server/signal.c
|
||||
+++ b/server/signal.c
|
||||
@@ -77,6 +77,7 @@ static const struct object_ops handler_ops =
|
||||
@ -590,7 +590,7 @@ index 74416fab7be..4b2b8c4a15e 100644
|
||||
handler_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/snapshot.c b/server/snapshot.c
|
||||
index e35588a136c..6e788abde1c 100644
|
||||
index e35588a..6e788ab 100644
|
||||
--- a/server/snapshot.c
|
||||
+++ b/server/snapshot.c
|
||||
@@ -71,6 +71,7 @@ static const struct object_ops snapshot_ops =
|
||||
@ -602,7 +602,7 @@ index e35588a136c..6e788abde1c 100644
|
||||
snapshot_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/sock.c b/server/sock.c
|
||||
index 1e126182190..0707515be00 100644
|
||||
index 84f54f6..43456f0 100644
|
||||
--- a/server/sock.c
|
||||
+++ b/server/sock.c
|
||||
@@ -155,6 +155,7 @@ static const struct object_ops sock_ops =
|
||||
@ -613,7 +613,7 @@ index 1e126182190..0707515be00 100644
|
||||
fd_close_handle, /* close_handle */
|
||||
sock_destroy /* destroy */
|
||||
};
|
||||
@@ -979,6 +980,7 @@ static const struct object_ops ifchange_ops =
|
||||
@@ -980,6 +981,7 @@ static const struct object_ops ifchange_ops =
|
||||
no_link_name, /* link_name */
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
@ -622,7 +622,7 @@ index 1e126182190..0707515be00 100644
|
||||
ifchange_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/symlink.c b/server/symlink.c
|
||||
index 9199bc559d7..ecc0e4300c4 100644
|
||||
index 9199bc5..ecc0e43 100644
|
||||
--- a/server/symlink.c
|
||||
+++ b/server/symlink.c
|
||||
@@ -70,6 +70,7 @@ static const struct object_ops symlink_ops =
|
||||
@ -634,7 +634,7 @@ index 9199bc559d7..ecc0e4300c4 100644
|
||||
symlink_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 2c864a607d0..a641509d601 100644
|
||||
index 2cf5054..30ef3d2 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -120,6 +120,7 @@ static const struct object_ops thread_apc_ops =
|
||||
@ -654,7 +654,7 @@ index 2c864a607d0..a641509d601 100644
|
||||
destroy_thread /* destroy */
|
||||
};
|
||||
diff --git a/server/timer.c b/server/timer.c
|
||||
index c8b4fa8194c..23c613b3cbd 100644
|
||||
index 3a786fb..95df28f 100644
|
||||
--- a/server/timer.c
|
||||
+++ b/server/timer.c
|
||||
@@ -75,6 +75,7 @@ static const struct object_ops timer_ops =
|
||||
@ -666,10 +666,10 @@ index c8b4fa8194c..23c613b3cbd 100644
|
||||
timer_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/token.c b/server/token.c
|
||||
index 532d7b74059..63e9833fc88 100644
|
||||
index 0810a61..e51dccc 100644
|
||||
--- a/server/token.c
|
||||
+++ b/server/token.c
|
||||
@@ -163,6 +163,7 @@ static const struct object_ops token_ops =
|
||||
@@ -155,6 +155,7 @@ static const struct object_ops token_ops =
|
||||
no_link_name, /* link_name */
|
||||
NULL, /* unlink_name */
|
||||
no_open_file, /* open_file */
|
||||
@ -678,7 +678,7 @@ index 532d7b74059..63e9833fc88 100644
|
||||
token_destroy /* destroy */
|
||||
};
|
||||
diff --git a/server/winstation.c b/server/winstation.c
|
||||
index a0be0586523..5f96be8e13f 100644
|
||||
index a0be058..5f96be8 100644
|
||||
--- a/server/winstation.c
|
||||
+++ b/server/winstation.c
|
||||
@@ -75,6 +75,7 @@ static const struct object_ops winstation_ops =
|
||||
@ -698,5 +698,5 @@ index a0be0586523..5f96be8e13f 100644
|
||||
desktop_destroy /* destroy */
|
||||
};
|
||||
--
|
||||
2.14.1
|
||||
2.7.4
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From f32342b9bb7bae0e42b79e61f29ab25d9f6b2873 Mon Sep 17 00:00:00 2001
|
||||
From 9fb320afdf57221eb32d51a03971ad3d13cf773e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Thu, 11 Feb 2016 03:17:09 +0100
|
||||
Subject: setupapi: Create registry keys for display devices and display
|
||||
@ -10,12 +10,12 @@ Subject: setupapi: Create registry keys for display devices and display
|
||||
2 files changed, 101 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
|
||||
index 9f77669..74a8e2b 100644
|
||||
index 4d53bd7..6415298 100644
|
||||
--- a/dlls/setupapi/devinst.c
|
||||
+++ b/dlls/setupapi/devinst.c
|
||||
@@ -92,6 +92,15 @@ static const WCHAR LowerFilters[] = {'L','o','w','e','r','F','i','l','t','e','r'
|
||||
static const WCHAR Phantom[] = {'P','h','a','n','t','o','m',0};
|
||||
static const WCHAR SymbolicLink[] = {'S','y','m','b','o','l','i','c','L','i','n','k',0};
|
||||
@@ -94,6 +94,15 @@ static const WCHAR SymbolicLink[] = {'S','y','m','b','o','l','i','c','L','i','n'
|
||||
static const WCHAR Control[] = {'C','o','n','t','r','o','l',0};
|
||||
static const WCHAR Linked[] = {'L','i','n','k','e','d',0};
|
||||
|
||||
+/* GUIDs */
|
||||
+static const WCHAR displayGUIDW[] = {'{','4','d','3','6','e','9','6','8','-','e','3','2','5','-',
|
||||
@ -29,7 +29,7 @@ index 9f77669..74a8e2b 100644
|
||||
/* is used to identify if a DeviceInfoSet pointer is
|
||||
valid or not */
|
||||
#define SETUP_DEVICE_INFO_SET_MAGIC 0xd00ff056
|
||||
@@ -127,6 +136,90 @@ struct device_iface
|
||||
@@ -129,6 +138,90 @@ struct device_iface
|
||||
struct list entry;
|
||||
};
|
||||
|
||||
@ -120,7 +120,7 @@ index 9f77669..74a8e2b 100644
|
||||
static inline void copy_device_data(SP_DEVINFO_DATA *data, const struct device *device)
|
||||
{
|
||||
data->ClassGuid = device->class;
|
||||
@@ -393,8 +486,7 @@ static HKEY SETUPDI_CreateDevKey(struct device *device)
|
||||
@@ -418,8 +511,7 @@ static HKEY SETUPDI_CreateDevKey(struct device *device)
|
||||
HKEY enumKey, key = INVALID_HANDLE_VALUE;
|
||||
LONG l;
|
||||
|
||||
@ -130,7 +130,7 @@ index 9f77669..74a8e2b 100644
|
||||
if (!l)
|
||||
{
|
||||
RegCreateKeyExW(enumKey, device->instanceId, 0, NULL, 0,
|
||||
@@ -486,8 +578,7 @@ static void SETUPDI_RemoveDevice(struct device *device)
|
||||
@@ -511,8 +603,7 @@ static void SETUPDI_RemoveDevice(struct device *device)
|
||||
HKEY enumKey;
|
||||
LONG l;
|
||||
|
||||
@ -140,7 +140,7 @@ index 9f77669..74a8e2b 100644
|
||||
if (!l)
|
||||
{
|
||||
RegDeleteTreeW(enumKey, device->instanceId);
|
||||
@@ -2012,8 +2103,7 @@ static void SETUPDI_EnumerateMatchingInterfaces(HDEVINFO DeviceInfoSet,
|
||||
@@ -2042,8 +2133,7 @@ static void SETUPDI_EnumerateMatchingInterfaces(HDEVINFO DeviceInfoSet,
|
||||
|
||||
TRACE("%s\n", debugstr_w(enumstr));
|
||||
|
||||
@ -150,7 +150,7 @@ index 9f77669..74a8e2b 100644
|
||||
for (i = 0; !l; i++)
|
||||
{
|
||||
len = sizeof(subKeyName) / sizeof(subKeyName[0]);
|
||||
@@ -2239,8 +2329,7 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class,
|
||||
@@ -2269,8 +2359,7 @@ static void SETUPDI_EnumerateDevices(HDEVINFO DeviceInfoSet, const GUID *class,
|
||||
TRACE("%p, %s, %s, %08x\n", DeviceInfoSet, debugstr_guid(class),
|
||||
debugstr_w(enumstr), flags);
|
||||
|
||||
@ -160,7 +160,7 @@ index 9f77669..74a8e2b 100644
|
||||
if (enumKey != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
if (enumstr)
|
||||
@@ -3580,8 +3669,7 @@ static HKEY SETUPDI_OpenDevKey(struct device *device, REGSAM samDesired)
|
||||
@@ -3609,8 +3698,7 @@ static HKEY SETUPDI_OpenDevKey(struct device *device, REGSAM samDesired)
|
||||
HKEY enumKey, key = INVALID_HANDLE_VALUE;
|
||||
LONG l;
|
||||
|
||||
@ -170,7 +170,7 @@ index 9f77669..74a8e2b 100644
|
||||
if (!l)
|
||||
{
|
||||
RegOpenKeyExW(enumKey, device->instanceId, 0, samDesired, &key);
|
||||
@@ -3697,8 +3785,7 @@ static BOOL SETUPDI_DeleteDevKey(struct device *device)
|
||||
@@ -3726,8 +3814,7 @@ static BOOL SETUPDI_DeleteDevKey(struct device *device)
|
||||
BOOL ret = FALSE;
|
||||
LONG l;
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
From a26b9ae70df4b2295567e3d8899b7c995f71e6dd Mon Sep 17 00:00:00 2001
|
||||
From 676f5e3e1b1f88116b542d4a458ec9a72e626c8d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 24 May 2015 00:39:14 +0200
|
||||
Subject: shell32: Add placeholder icons to match icon offset with XP.
|
||||
|
||||
---
|
||||
dlls/shell32/placeholder.ico | Bin 0 -> 1726 bytes
|
||||
dlls/shell32/shell32.rc | 170 ++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/shell32/shresdef.h | 179 +++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 349 insertions(+)
|
||||
dlls/shell32/shell32.rc | 168 ++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/shell32/shresdef.h | 177 +++++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 345 insertions(+)
|
||||
create mode 100644 dlls/shell32/placeholder.ico
|
||||
|
||||
diff --git a/dlls/shell32/placeholder.ico b/dlls/shell32/placeholder.ico
|
||||
@ -34,16 +34,14 @@ literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/dlls/shell32/shell32.rc b/dlls/shell32/shell32.rc
|
||||
index 847d2ce..2274997 100644
|
||||
index 20261de..660ce23 100644
|
||||
--- a/dlls/shell32/shell32.rc
|
||||
+++ b/dlls/shell32/shell32.rc
|
||||
@@ -421,6 +421,176 @@ IDI_SHELL_MY_NETWORK_PLACES ICON mydocs.ico
|
||||
@@ -503,6 +503,174 @@ IDI_SHELL_MY_NETWORK_PLACES ICON mydocs.ico
|
||||
/* @makedep: mydocs.ico */
|
||||
IDI_SHELL_FAVORITES ICON mydocs.ico
|
||||
|
||||
+/* placeholder icons to correct icon index */
|
||||
+IDI_SHELL_PLACEHOLDER2 ICON placeholder.ico
|
||||
+IDI_SHELL_PLACEHOLDER3 ICON placeholder.ico
|
||||
+IDI_SHELL_PLACEHOLDER21 ICON placeholder.ico
|
||||
+IDI_SHELL_PLACEHOLDER22 ICON placeholder.ico
|
||||
+IDI_SHELL_PLACEHOLDER25 ICON placeholder.ico
|
||||
@ -215,19 +213,10 @@ index 847d2ce..2274997 100644
|
||||
IDB_TB_LARGE_LIGHT BITMAP idb_tb_large.bmp
|
||||
|
||||
diff --git a/dlls/shell32/shresdef.h b/dlls/shell32/shresdef.h
|
||||
index 183a75e..ddae063 100644
|
||||
index 1a054ff..e88ed41 100644
|
||||
--- a/dlls/shell32/shresdef.h
|
||||
+++ b/dlls/shell32/shresdef.h
|
||||
@@ -166,6 +166,8 @@
|
||||
#define IDD_TREEVIEW 0x3741
|
||||
|
||||
#define IDI_SHELL_DOCUMENT 1
|
||||
+#define IDI_SHELL_PLACEHOLDER2 2
|
||||
+#define IDI_SHELL_PLACEHOLDER3 3
|
||||
#define IDI_SHELL_FOLDER 4
|
||||
#define IDI_SHELL_FOLDER_OPEN 5
|
||||
#define IDI_SHELL_5_12_FLOPPY 6
|
||||
@@ -183,25 +185,202 @@
|
||||
@@ -189,25 +189,202 @@
|
||||
#define IDI_SHELL_MY_NETWORK_PLACES 18
|
||||
#define IDI_SHELL_COMPUTERS_NEAR_ME 19
|
||||
#define IDI_SHELL_FOLDER_SMALL_XP 20
|
||||
@ -431,5 +420,5 @@ index 183a75e..ddae063 100644
|
||||
|
||||
/*
|
||||
--
|
||||
2.4.0
|
||||
2.7.4
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b078695fc13099df9edf2eaba974f6535808f4a3 Mon Sep 17 00:00:00 2001
|
||||
From f244bd251e05597fa57e8088c3196e0b17726d5f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sat, 6 Jun 2015 06:53:34 +0200
|
||||
Subject: [PATCH] wined3d: Use real values for memory accounting on NVIDIA
|
||||
@ -8,16 +8,16 @@ FIXME: Reimplement wined3d_device_get_available_texture_mem
|
||||
without using the context on the main thread.
|
||||
---
|
||||
dlls/d3d9/tests/device.c | 11 +++++++----
|
||||
dlls/wined3d/adapter_gl.c | 10 ++++++++++
|
||||
dlls/wined3d/device.c | 25 +++++++++++++++++++++++++
|
||||
dlls/wined3d/directx.c | 10 ++++++++++
|
||||
dlls/wined3d/wined3d_gl.h | 1 +
|
||||
4 files changed, 43 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
|
||||
index 0ffc1ae..0c3937e 100644
|
||||
index 66bf5b0..b9ff69c 100644
|
||||
--- a/dlls/d3d9/tests/device.c
|
||||
+++ b/dlls/d3d9/tests/device.c
|
||||
@@ -9470,10 +9470,13 @@ static void test_vidmem_accounting(void)
|
||||
@@ -9496,10 +9496,13 @@ static void test_vidmem_accounting(void)
|
||||
}
|
||||
vidmem_end = IDirect3DDevice9_GetAvailableTextureMem(device);
|
||||
|
||||
@ -35,11 +35,39 @@ index 0ffc1ae..0c3937e 100644
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(textures); i++)
|
||||
{
|
||||
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
|
||||
index 686c79a..15593ce 100644
|
||||
--- a/dlls/wined3d/adapter_gl.c
|
||||
+++ b/dlls/wined3d/adapter_gl.c
|
||||
@@ -220,6 +220,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
|
||||
{"GL_NV_vertex_program2", NV_VERTEX_PROGRAM2 },
|
||||
{"GL_NV_vertex_program2_option", NV_VERTEX_PROGRAM2_OPTION },
|
||||
{"GL_NV_vertex_program3", NV_VERTEX_PROGRAM3 },
|
||||
+ {"GL_NVX_gpu_memory_info", NVX_GPU_MEMORY_INFO },
|
||||
};
|
||||
|
||||
static const struct wined3d_extension_map wgl_extension_map[] =
|
||||
@@ -1002,6 +1003,15 @@ static const struct wined3d_gpu_description *query_gpu_description(const struct
|
||||
TRACE("Card reports vendor PCI ID 0x%04x, device PCI ID 0x%04x, 0x%s bytes of video memory.\n",
|
||||
vendor, device, wine_dbgstr_longlong(*vram_bytes));
|
||||
}
|
||||
+ else if (gl_info->supported[NVX_GPU_MEMORY_INFO])
|
||||
+ {
|
||||
+ GLint vram_kb;
|
||||
+ gl_info->gl_ops.gl.p_glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &vram_kb);
|
||||
+
|
||||
+ *vram_bytes = (UINT64)vram_kb * 1024;
|
||||
+ TRACE("Got 0x%s as video memory from NVX_GPU_MEMORY_INFO extension.\n",
|
||||
+ wine_dbgstr_longlong(*vram_bytes));
|
||||
+ }
|
||||
|
||||
if (wined3d_settings.pci_vendor_id != PCI_VENDOR_NONE)
|
||||
{
|
||||
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
|
||||
index 17103cc..bce8936 100644
|
||||
index 5079113..2788320 100644
|
||||
--- a/dlls/wined3d/device.c
|
||||
+++ b/dlls/wined3d/device.c
|
||||
@@ -1284,8 +1284,33 @@ void CDECL wined3d_device_set_multithreaded(struct wined3d_device *device)
|
||||
@@ -1301,8 +1301,33 @@ void CDECL wined3d_device_set_multithreaded(struct wined3d_device *device)
|
||||
|
||||
UINT CDECL wined3d_device_get_available_texture_mem(const struct wined3d_device *device)
|
||||
{
|
||||
@ -73,39 +101,11 @@ index 17103cc..bce8936 100644
|
||||
TRACE("Emulating 0x%s bytes. 0x%s used, returning 0x%s left.\n",
|
||||
wine_dbgstr_longlong(device->adapter->vram_bytes),
|
||||
wine_dbgstr_longlong(device->adapter->vram_bytes_used),
|
||||
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
index f7f6452..ec5d8d8 100644
|
||||
--- a/dlls/wined3d/directx.c
|
||||
+++ b/dlls/wined3d/directx.c
|
||||
@@ -270,6 +270,7 @@ static const struct wined3d_extension_map gl_extension_map[] =
|
||||
{"GL_NV_vertex_program2", NV_VERTEX_PROGRAM2 },
|
||||
{"GL_NV_vertex_program2_option", NV_VERTEX_PROGRAM2_OPTION },
|
||||
{"GL_NV_vertex_program3", NV_VERTEX_PROGRAM3 },
|
||||
+ {"GL_NVX_gpu_memory_info", NVX_GPU_MEMORY_INFO },
|
||||
};
|
||||
|
||||
static const struct wined3d_extension_map wgl_extension_map[] =
|
||||
@@ -1578,6 +1579,15 @@ static const struct gpu_description *query_gpu_description(const struct wined3d_
|
||||
TRACE("Card reports vendor PCI ID 0x%04x, device PCI ID 0x%04x, 0x%s bytes of video memory.\n",
|
||||
vendor, device, wine_dbgstr_longlong(*vram_bytes));
|
||||
}
|
||||
+ else if (gl_info->supported[NVX_GPU_MEMORY_INFO])
|
||||
+ {
|
||||
+ GLint vram_kb;
|
||||
+ gl_info->gl_ops.gl.p_glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &vram_kb);
|
||||
+
|
||||
+ *vram_bytes = (UINT64)vram_kb * 1024;
|
||||
+ TRACE("Got 0x%s as video memory from NVX_GPU_MEMORY_INFO extension.\n",
|
||||
+ wine_dbgstr_longlong(*vram_bytes));
|
||||
+ }
|
||||
|
||||
if (wined3d_settings.pci_vendor_id != PCI_VENDOR_NONE)
|
||||
{
|
||||
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
|
||||
index cc6f888..daed891 100644
|
||||
index 525c298..2fc3348 100644
|
||||
--- a/dlls/wined3d/wined3d_gl.h
|
||||
+++ b/dlls/wined3d/wined3d_gl.h
|
||||
@@ -199,6 +199,7 @@ enum wined3d_gl_extension
|
||||
@@ -202,6 +202,7 @@ enum wined3d_gl_extension
|
||||
NV_VERTEX_PROGRAM2,
|
||||
NV_VERTEX_PROGRAM2_OPTION,
|
||||
NV_VERTEX_PROGRAM3,
|
||||
|
@ -1,12 +1,12 @@
|
||||
From ad95d230cde0c3fe96259e823ed46be34f801fc2 Mon Sep 17 00:00:00 2001
|
||||
From 344e9d3e5452200b2599348ed7d8c69191c1aaad Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 18 Aug 2017 23:51:59 +0200
|
||||
Subject: [PATCH] wined3d: Implement dual source blending.
|
||||
|
||||
---
|
||||
dlls/d3d11/tests/d3d11.c | 2 +-
|
||||
dlls/wined3d/adapter_gl.c | 10 ++++++++++
|
||||
dlls/wined3d/context.c | 11 ++++++++++-
|
||||
dlls/wined3d/directx.c | 10 ++++++++++
|
||||
dlls/wined3d/glsl_shader.c | 20 +++++++++++++++++---
|
||||
dlls/wined3d/shader.c | 2 ++
|
||||
dlls/wined3d/state.c | 14 ++++++++++++--
|
||||
@ -14,10 +14,10 @@ Subject: [PATCH] wined3d: Implement dual source blending.
|
||||
7 files changed, 74 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
|
||||
index e6e3c215c1..6e025d23ab 100644
|
||||
index b3e946d..67158e5 100644
|
||||
--- a/dlls/d3d11/tests/d3d11.c
|
||||
+++ b/dlls/d3d11/tests/d3d11.c
|
||||
@@ -27869,7 +27869,7 @@ static void test_dual_blending(void)
|
||||
@@ -28153,7 +28153,7 @@ static void test_dual_blending(void)
|
||||
ID3D11DeviceContext_ClearRenderTargetView(context, rtv[1], white);
|
||||
ID3D11DeviceContext_Draw(context, 3, 0);
|
||||
|
||||
@ -26,11 +26,39 @@ index e6e3c215c1..6e025d23ab 100644
|
||||
todo_wine check_texture_color(render_target, 0xff0000ff, 0);
|
||||
|
||||
ID3D11BlendState_Release(blend_state);
|
||||
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
|
||||
index 374c9fc..2ece845 100644
|
||||
--- a/dlls/wined3d/adapter_gl.c
|
||||
+++ b/dlls/wined3d/adapter_gl.c
|
||||
@@ -2890,6 +2890,12 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info)
|
||||
gl_info->limits.buffers = min(MAX_RENDER_TARGET_VIEWS, gl_max);
|
||||
TRACE("Max draw buffers: %u.\n", gl_max);
|
||||
}
|
||||
+ if (gl_info->supported[ARB_BLEND_FUNC_EXTENDED])
|
||||
+ {
|
||||
+ gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &gl_max);
|
||||
+ gl_info->limits.dual_buffers = gl_max;
|
||||
+ TRACE("Max dual source draw buffers: %u.\n", gl_max);
|
||||
+ }
|
||||
if (gl_info->supported[ARB_MULTITEXTURE])
|
||||
{
|
||||
if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
|
||||
@@ -3695,6 +3701,10 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
|
||||
for (i = 0; i < gl_info->limits.buffers; ++i)
|
||||
d3d_info->valid_rt_mask |= (1u << i);
|
||||
|
||||
+ d3d_info->valid_dual_rt_mask = 0;
|
||||
+ for (i = 0; i < gl_info->limits.dual_buffers; ++i)
|
||||
+ d3d_info->valid_dual_rt_mask |= (1u << i);
|
||||
+
|
||||
if (!d3d_info->shader_color_key)
|
||||
{
|
||||
/* We do not want to deal with re-creating immutable texture storage
|
||||
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
|
||||
index 21ad11d958..ec5af4f5a4 100644
|
||||
index 412ff18..0e86f76 100644
|
||||
--- a/dlls/wined3d/context.c
|
||||
+++ b/dlls/wined3d/context.c
|
||||
@@ -3131,10 +3131,19 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const
|
||||
@@ -3129,10 +3129,19 @@ static DWORD find_draw_buffers_mask(const struct wined3d_context *context, const
|
||||
else if (!context->render_offscreen)
|
||||
return context_generate_rt_mask_from_resource(rts[0]->resource);
|
||||
|
||||
@ -51,39 +79,11 @@ index 21ad11d958..ec5af4f5a4 100644
|
||||
while (mask)
|
||||
{
|
||||
i = wined3d_bit_scan(&mask);
|
||||
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
index 3a958991b1..552a4b9a1c 100644
|
||||
--- a/dlls/wined3d/directx.c
|
||||
+++ b/dlls/wined3d/directx.c
|
||||
@@ -3544,6 +3544,12 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info)
|
||||
gl_info->limits.buffers = min(MAX_RENDER_TARGET_VIEWS, gl_max);
|
||||
TRACE("Max draw buffers: %u.\n", gl_max);
|
||||
}
|
||||
+ if (gl_info->supported[ARB_BLEND_FUNC_EXTENDED])
|
||||
+ {
|
||||
+ gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_DUAL_SOURCE_DRAW_BUFFERS, &gl_max);
|
||||
+ gl_info->limits.dual_buffers = gl_max;
|
||||
+ TRACE("Max dual source draw buffers: %u.\n", gl_max);
|
||||
+ }
|
||||
if (gl_info->supported[ARB_MULTITEXTURE])
|
||||
{
|
||||
if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
|
||||
@@ -4343,6 +4349,10 @@ static BOOL wined3d_adapter_init_gl_caps(struct wined3d_adapter *adapter,
|
||||
for (i = 0; i < gl_info->limits.buffers; ++i)
|
||||
d3d_info->valid_rt_mask |= (1u << i);
|
||||
|
||||
+ d3d_info->valid_dual_rt_mask = 0;
|
||||
+ for (i = 0; i < gl_info->limits.dual_buffers; ++i)
|
||||
+ d3d_info->valid_dual_rt_mask |= (1u << i);
|
||||
+
|
||||
if (!d3d_info->shader_color_key)
|
||||
{
|
||||
/* We do not want to deal with re-creating immutable texture storage for color keying emulation. */
|
||||
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
|
||||
index a4e66ccca7..49fb5f7c59 100644
|
||||
index 76c455b..84afc94 100644
|
||||
--- a/dlls/wined3d/glsl_shader.c
|
||||
+++ b/dlls/wined3d/glsl_shader.c
|
||||
@@ -3036,6 +3036,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register *
|
||||
@@ -2757,6 +2757,7 @@ static void shader_glsl_get_register_name(const struct wined3d_shader_register *
|
||||
break;
|
||||
|
||||
case WINED3DSPR_COLOROUT:
|
||||
@ -91,7 +91,7 @@ index a4e66ccca7..49fb5f7c59 100644
|
||||
if (reg->idx[0].offset >= gl_info->limits.buffers)
|
||||
WARN("Write to render target %u, only %d supported.\n",
|
||||
reg->idx[0].offset, gl_info->limits.buffers);
|
||||
@@ -7896,7 +7897,10 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
|
||||
@@ -7646,7 +7647,10 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
|
||||
{
|
||||
const struct wined3d_shader_signature *output_signature = &shader->output_signature;
|
||||
|
||||
@ -103,7 +103,7 @@ index a4e66ccca7..49fb5f7c59 100644
|
||||
if (output_signature->element_count)
|
||||
{
|
||||
for (i = 0; i < output_signature->element_count; ++i)
|
||||
@@ -7911,7 +7915,12 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
|
||||
@@ -7661,7 +7665,12 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
|
||||
continue;
|
||||
}
|
||||
if (shader_glsl_use_explicit_attrib_location(gl_info))
|
||||
@ -117,7 +117,7 @@ index a4e66ccca7..49fb5f7c59 100644
|
||||
shader_addline(buffer, "out %s4 color_out%u;\n",
|
||||
component_type_info[output->component_type].glsl_vector_type, output->semantic_idx);
|
||||
}
|
||||
@@ -7924,7 +7933,12 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
|
||||
@@ -7674,7 +7683,12 @@ static GLuint shader_glsl_generate_pshader(const struct wined3d_context *context
|
||||
{
|
||||
i = wined3d_bit_scan(&mask);
|
||||
if (shader_glsl_use_explicit_attrib_location(gl_info))
|
||||
@ -132,7 +132,7 @@ index a4e66ccca7..49fb5f7c59 100644
|
||||
}
|
||||
}
|
||||
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
|
||||
index 20d4f0773d..f2e3c23976 100644
|
||||
index 20d4f07..f2e3c23 100644
|
||||
--- a/dlls/wined3d/shader.c
|
||||
+++ b/dlls/wined3d/shader.c
|
||||
@@ -4101,6 +4101,8 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
|
||||
@ -145,7 +145,7 @@ index 20d4f0773d..f2e3c23976 100644
|
||||
|
||||
static HRESULT pixel_shader_init(struct wined3d_shader *shader, struct wined3d_device *device,
|
||||
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
|
||||
index 2dd6ac2a63..a2e95a4a56 100644
|
||||
index d37e809..1bd3863 100644
|
||||
--- a/dlls/wined3d/state.c
|
||||
+++ b/dlls/wined3d/state.c
|
||||
@@ -533,12 +533,14 @@ static void state_blend(struct wined3d_context *context, const struct wined3d_st
|
||||
@ -188,7 +188,7 @@ index 2dd6ac2a63..a2e95a4a56 100644
|
||||
state->render_states[WINED3D_RS_SRCBLEND],
|
||||
state->render_states[WINED3D_RS_DESTBLEND], rt_format);
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index 368b817950..c3a3c16aa0 100644
|
||||
index af29b44..640cf1e 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -190,6 +190,7 @@ struct wined3d_d3d_info
|
||||
@ -199,7 +199,7 @@ index 368b817950..c3a3c16aa0 100644
|
||||
DWORD wined3d_creation_flags;
|
||||
BOOL shader_double_precision;
|
||||
enum wined3d_feature_level feature_level;
|
||||
@@ -1351,7 +1352,8 @@ struct ps_compile_args
|
||||
@@ -1354,7 +1355,8 @@ struct ps_compile_args
|
||||
DWORD flatshading : 1;
|
||||
DWORD alpha_test_func : 3;
|
||||
DWORD render_offscreen : 1;
|
||||
@ -209,7 +209,7 @@ index 368b817950..c3a3c16aa0 100644
|
||||
};
|
||||
|
||||
enum fog_src_type
|
||||
@@ -1913,7 +1915,8 @@ struct wined3d_context
|
||||
@@ -1916,7 +1918,8 @@ struct wined3d_context
|
||||
DWORD shader_update_mask : 6; /* WINED3D_SHADER_TYPE_COUNT, 6 */
|
||||
DWORD clip_distance_mask : 8; /* MAX_CLIP_DISTANCES, 8 */
|
||||
DWORD num_untracked_materials : 2; /* Max value 2 */
|
||||
@ -219,7 +219,7 @@ index 368b817950..c3a3c16aa0 100644
|
||||
|
||||
DWORD constant_update_mask;
|
||||
DWORD numbered_array_mask;
|
||||
@@ -2540,6 +2543,7 @@ struct wined3d_fbo_ops
|
||||
@@ -2543,6 +2546,7 @@ struct wined3d_fbo_ops
|
||||
struct wined3d_gl_limits
|
||||
{
|
||||
UINT buffers;
|
||||
@ -227,7 +227,7 @@ index 368b817950..c3a3c16aa0 100644
|
||||
UINT lights;
|
||||
UINT textures;
|
||||
UINT texture_coords;
|
||||
@@ -2881,6 +2885,22 @@ struct wined3d_state
|
||||
@@ -2928,6 +2932,22 @@ struct wined3d_state
|
||||
struct wined3d_rasterizer_state *rasterizer_state;
|
||||
};
|
||||
|
||||
@ -251,5 +251,5 @@ index 368b817950..c3a3c16aa0 100644
|
||||
{
|
||||
GLuint tex_1d;
|
||||
--
|
||||
2.18.0
|
||||
2.7.4
|
||||
|
||||
|
@ -1,18 +1,18 @@
|
||||
From 5b080b413d64e68feeddfa6b843835a508ce2262 Mon Sep 17 00:00:00 2001
|
||||
From 1014fb02f6b629591691fbb321ad794ecb6cc389 Mon Sep 17 00:00:00 2001
|
||||
From: Jarkko Korpi <jarkko_korpi@hotmail.com>
|
||||
Date: Tue, 16 May 2017 15:39:29 +0300
|
||||
Subject: wined3d: Also check for 'Brian Paul' to detect Mesa gl_vendor.
|
||||
|
||||
As already done in wined3d_guess_card_vendor.
|
||||
---
|
||||
dlls/wined3d/directx.c | 1 +
|
||||
dlls/wined3d/adapter_gl.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
|
||||
index 7273d6cec10..6366fb2a16a 100644
|
||||
--- a/dlls/wined3d/directx.c
|
||||
+++ b/dlls/wined3d/directx.c
|
||||
@@ -1783,6 +1783,7 @@ static enum wined3d_gl_vendor wined3d_guess_gl_vendor(const struct wined3d_gl_in
|
||||
diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c
|
||||
index dc49c88..701455e 100644
|
||||
--- a/dlls/wined3d/adapter_gl.c
|
||||
+++ b/dlls/wined3d/adapter_gl.c
|
||||
@@ -1190,6 +1190,7 @@ static enum wined3d_gl_vendor wined3d_guess_gl_vendor(const struct wined3d_gl_in
|
||||
return GL_VENDOR_FGLRX;
|
||||
|
||||
if (strstr(gl_vendor_string, "Mesa")
|
||||
@ -21,5 +21,5 @@ index 7273d6cec10..6366fb2a16a 100644
|
||||
|| strstr(gl_vendor_string, "Advanced Micro Devices, Inc.")
|
||||
|| strstr(gl_vendor_string, "DRI R300 Project")
|
||||
--
|
||||
2.12.2
|
||||
2.7.4
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user