Rebase against fec0b697c74a8e016b41968b342f9fc9fe11bf74.

[ntdll-NtQueryInformationThread]
Removed patch to implement support for fs segment in GetThreadSelectorEntry
(accepted upstream).
This commit is contained in:
Sebastian Lackner 2016-07-15 16:22:48 +02:00
parent f788007dc4
commit 6a8aacda4c
7 changed files with 39 additions and 223 deletions

View File

@ -1,96 +0,0 @@
From 9aaa34a9cd1e72b82212933dffcbf07692d3fa64 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 7 May 2016 11:56:17 +0800
Subject: ntdll: Add support for fs to
NtQueryInformationThread(ThreadDescriptorTableEntry).
This patch fixes one of the problems reported in the bug 40583.
---
dlls/kernel32/tests/thread.c | 41 +++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/thread.c | 11 +++++++++++
2 files changed, 52 insertions(+)
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index e0de3f9..67c5a37 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -1100,6 +1100,46 @@ static void test_SetThreadContext(void)
CloseHandle( thread );
}
+static void test_GetThreadSelectorEntry(void)
+{
+ TEB *teb = NtCurrentTeb();
+ LDT_ENTRY entry;
+ CONTEXT ctx;
+ TEB *teb_fs;
+ DWORD ret;
+
+ memset(&ctx, 0x11, sizeof(ctx));
+ ctx.ContextFlags = CONTEXT_SEGMENTS | CONTEXT_CONTROL;
+ ret = GetThreadContext(GetCurrentThread(), &ctx);
+ ok(ret, "GetThreadContext error %u\n", GetLastError());
+ ok(!HIWORD(ctx.SegCs) && !HIWORD(ctx.SegDs) && !HIWORD(ctx.SegEs) && !HIWORD(ctx.SegFs) && !HIWORD(ctx.SegGs),
+ "cs %08x, ds %08x, es %08x, fs %08x, gs %08x\n", ctx.SegCs, ctx.SegDs, ctx.SegEs, ctx.SegFs, ctx.SegGs);
+
+ ret = GetThreadSelectorEntry(GetCurrentThread(), ctx.SegCs, &entry);
+ ok(ret, "GetThreadSelectorEntry(SegCs) error %u\n", GetLastError());
+
+ ret = GetThreadSelectorEntry(GetCurrentThread(), ctx.SegDs, &entry);
+ ok(ret, "GetThreadSelectorEntry(SegDs) error %u\n", GetLastError());
+
+ memset(&entry, 0x11, sizeof(entry));
+ ret = GetThreadSelectorEntry(GetCurrentThread(), ctx.SegFs, &entry);
+ ok(ret, "GetThreadSelectorEntry(SegFs) error %u\n", GetLastError());
+
+ teb_fs = (TEB *)((entry.HighWord.Bits.BaseHi << 24) | (entry.HighWord.Bits.BaseMid << 16) | entry.BaseLow);
+ ok(teb_fs == teb, "teb_fs %p != teb %p\n", teb_fs, teb);
+
+ ret = (entry.HighWord.Bits.LimitHi << 16) | entry.LimitLow;
+ ok(ret == 0x0fff || ret == 0x4000 /* testbot win7u */, "got %#x\n", ret);
+
+ ok(entry.HighWord.Bits.Dpl == 3, "got %#x\n", entry.HighWord.Bits.Dpl);
+ ok(entry.HighWord.Bits.Sys == 0, "got %#x\n", entry.HighWord.Bits.Sys);
+ ok(entry.HighWord.Bits.Pres == 1, "got %#x\n", entry.HighWord.Bits.Pres);
+ ok(entry.HighWord.Bits.Granularity == 0, "got %#x\n", entry.HighWord.Bits.Granularity);
+ ok(entry.HighWord.Bits.Default_Big == 1, "got %#x\n", entry.HighWord.Bits.Default_Big);
+ ok(entry.HighWord.Bits.Type == 0x13, "got %#x\n", entry.HighWord.Bits.Type);
+ ok(entry.HighWord.Bits.Reserved_0 == 0, "got %#x\n", entry.HighWord.Bits.Reserved_0);
+}
+
#endif /* __i386__ */
static HANDLE finish_event;
@@ -1965,6 +2005,7 @@ START_TEST(thread)
test_GetThreadExitCode();
#ifdef __i386__
test_SetThreadContext();
+ test_GetThreadSelectorEntry();
#endif
test_QueueUserWorkItem();
test_RegisterWaitForSingleObject();
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index f6a5fbe..8465a26 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -1051,6 +1051,17 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class,
{
if (sel == (wine_get_cs() & ~3))
tdi->Entry.HighWord.Bits.Type |= 8; /* code segment */
+ else if (sel == (ntdll_get_thread_data()->fs & ~3))
+ {
+ ULONG_PTR fs_base = (ULONG_PTR)NtCurrentTeb();
+ tdi->Entry.BaseLow = fs_base & 0xffff;
+ tdi->Entry.HighWord.Bits.BaseMid = (fs_base >> 16) & 0xff;
+ tdi->Entry.HighWord.Bits.BaseHi = (fs_base >> 24) & 0xff;
+ tdi->Entry.LimitLow = 0x0fff;
+ tdi->Entry.HighWord.Bits.LimitHi = 0;
+ tdi->Entry.HighWord.Bits.Granularity = 0;
+ tdi->Entry.HighWord.Bits.Type = 0x13;
+ }
else status = STATUS_ACCESS_DENIED;
}
}
--
2.8.0

View File

@ -1 +0,0 @@
Fixes: Implement support for fs segment in GetThreadSelectorEntry

View File

@ -1,4 +1,4 @@
From 41ea9000f7791e23906af3ab936728c52a0ed7aa Mon Sep 17 00:00:00 2001
From b82b9f71f8204b1c55e397ca3de1bbd28a5ba86e Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 28 Apr 2016 18:14:36 +0800
Subject: ntdll: Implement NtSetLdtEntries.
@ -9,7 +9,7 @@ Subject: ntdll: Implement NtSetLdtEntries.
2 files changed, 106 insertions(+), 1 deletion(-)
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index 67c5a37..5de114e 100644
index b5ad1da..8c5cb3c 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -102,6 +102,7 @@ static NTSTATUS (WINAPI *pNtQueryInformationThread)(HANDLE,THREADINFOCLASS,PVOID
@ -21,7 +21,7 @@ index 67c5a37..5de114e 100644
static HANDLE create_target_process(const char *arg)
{
@@ -1140,6 +1141,82 @@ static void test_GetThreadSelectorEntry(void)
ok(entry.HighWord.Bits.Reserved_0 == 0, "got %#x\n", entry.HighWord.Bits.Reserved_0);
ok(entry.HighWord.Bits.Granularity == 0, "expected 0, got %u\n", entry.HighWord.Bits.Granularity);
}
+static void test_NtSetLdtEntries(void)

View File

@ -1 +0,0 @@
Depends: ntdll-NtQueryInformationThread

View File

@ -1,58 +0,0 @@
From d31370afac230bcf175872ef348030472577e3c7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 12 Feb 2016 01:57:11 +0100
Subject: opengl32/tests: Include wgl.h and remove duplicate declarations.
---
dlls/opengl32/tests/opengl.c | 25 +++----------------------
1 file changed, 3 insertions(+), 22 deletions(-)
diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c
index e5e1507..3f203ab 100644
--- a/dlls/opengl32/tests/opengl.c
+++ b/dlls/opengl32/tests/opengl.c
@@ -21,38 +21,19 @@
#include <windows.h>
#include <wingdi.h>
#include "wine/test.h"
-
-void WINAPI glClearColor(float red, float green, float blue, float alpha);
-void WINAPI glClear(unsigned int mask);
-#define GL_COLOR 0x1800
-typedef unsigned int GLenum;
-typedef int GLint;
-void WINAPI glCopyPixels(int x, int y, int width, int height, GLenum type);
-void WINAPI glFinish(void);
-#define GL_NO_ERROR 0x0
-#define GL_INVALID_OPERATION 0x502
-GLenum WINAPI glGetError(void);
-#define GL_COLOR_BUFFER_BIT 0x00004000
-const unsigned char * WINAPI glGetString(unsigned int);
-#define GL_VENDOR 0x1F00
-#define GL_RENDERER 0x1F01
-#define GL_VERSION 0x1F02
-#define GL_EXTENSIONS 0x1F03
-
-#define GL_VIEWPORT 0x0ba2
-void WINAPI glGetIntegerv(GLenum pname, GLint *params);
+#include "wine/wgl.h"
#define MAX_FORMATS 256
typedef void* HPBUFFERARB;
/* WGL_ARB_create_context */
static HGLRC (WINAPI *pwglCreateContextAttribsARB)(HDC hDC, HGLRC hShareContext, const int *attribList);
-/* GetLastError */
-#define ERROR_INVALID_VERSION_ARB 0x2095
+
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
#define WGL_CONTEXT_FLAGS_ARB 0x2094
+
/* Flags for WGL_CONTEXT_FLAGS_ARB */
#define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
--
2.7.1

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "5101a90bca2bd2618b488f37624af43efe17a0e0"
echo "fec0b697c74a8e016b41968b342f9fc9fe11bf74"
}
# Show version information
@ -218,7 +218,6 @@ patch_enable_all ()
enable_ntdll_Loader_Machine_Type="$1"
enable_ntdll_NtAccessCheck="$1"
enable_ntdll_NtQueryEaFile="$1"
enable_ntdll_NtQueryInformationThread="$1"
enable_ntdll_NtQuerySection="$1"
enable_ntdll_NtSetLdtEntries="$1"
enable_ntdll_NtUnmapViewOfSection="$1"
@ -830,9 +829,6 @@ patch_enable ()
ntdll-NtQueryEaFile)
enable_ntdll_NtQueryEaFile="$2"
;;
ntdll-NtQueryInformationThread)
enable_ntdll_NtQueryInformationThread="$2"
;;
ntdll-NtQuerySection)
enable_ntdll_NtQuerySection="$2"
;;
@ -2152,13 +2148,6 @@ if test "$enable_ntdll_Purist_Mode" -eq 1; then
enable_ntdll_DllRedirects=1
fi
if test "$enable_ntdll_NtSetLdtEntries" -eq 1; then
if test "$enable_ntdll_NtQueryInformationThread" -gt 1; then
abort "Patchset ntdll-NtQueryInformationThread disabled, but ntdll-NtSetLdtEntries depends on that."
fi
enable_ntdll_NtQueryInformationThread=1
fi
if test "$enable_ntdll_Junction_Points" -eq 1; then
if test "$enable_ntdll_NtQueryEaFile" -gt 1; then
abort "Patchset ntdll-NtQueryEaFile disabled, but ntdll-Junction_Points depends on that."
@ -4936,18 +4925,6 @@ if test "$enable_ntdll_NtAccessCheck" -eq 1; then
) >> "$patchlist"
fi
# Patchset ntdll-NtQueryInformationThread
# |
# | Modified files:
# | * dlls/kernel32/tests/thread.c, dlls/ntdll/thread.c
# |
if test "$enable_ntdll_NtQueryInformationThread" -eq 1; then
patch_apply ntdll-NtQueryInformationThread/0001-ntdll-Add-support-for-fs-to-NtQueryInformationThread.patch
(
echo '+ { "Dmitry Timoshkov", "ntdll: Add support for fs to NtQueryInformationThread(ThreadDescriptorTableEntry).", 1 },';
) >> "$patchlist"
fi
# Patchset ntdll-NtQuerySection
# |
# | This patchset fixes the following Wine bugs:
@ -4972,9 +4949,6 @@ fi
# Patchset ntdll-NtSetLdtEntries
# |
# | This patchset has the following (direct or indirect) dependencies:
# | * ntdll-NtQueryInformationThread
# |
# | Modified files:
# | * dlls/kernel32/tests/thread.c, dlls/ntdll/nt.c, libs/wine/ldt.c
# |
@ -5704,10 +5678,8 @@ fi
# | dlls/opengl32/wgl.c
# |
if test "$enable_opengl32_glDebugMessageCallback" -eq 1; then
patch_apply opengl32-glDebugMessageCallback/0001-opengl32-tests-Include-wgl.h-and-remove-duplicate-de.patch
patch_apply opengl32-glDebugMessageCallback/0002-opengl32-Add-wrappers-for-glDebugMessageCallback-to-.patch
(
echo '+ { "Sebastian Lackner", "opengl32/tests: Include wgl.h and remove duplicate declarations.", 1 },';
echo '+ { "Sebastian Lackner", "opengl32: Add wrappers for glDebugMessageCallback to handle calling convention differences.", 1 },';
) >> "$patchlist"
fi

View File

@ -73,7 +73,7 @@ diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader
shader_arb_ps_local_constants(compiled, context, state, rt_height);
}
@@ -8024,11 +8036,16 @@ static void arbfp_blit_surface(struct wined3d_device *device, enum wined3d_blit_
@@ -8029,11 +8041,16 @@ static void arbfp_blit_surface(struct wined3d_device *device, enum wined3d_blit_
/* Leave the opengl state valid for blitting */
arbfp_blit_unset(context->gl_info);
@ -3878,7 +3878,7 @@ diff --git a/dlls/wined3d/sampler.c b/dlls/wined3d/sampler.c
diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -3036,7 +3036,11 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
@@ -3052,7 +3052,11 @@ void find_ps_compile_args(const struct wined3d_state *state, const struct wined3
UINT i;
memset(args, 0, sizeof(*args)); /* FIXME: Make sure all bits are set. */
@ -6366,7 +6366,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN;
@@ -1367,8 +1371,10 @@ struct wined3d_occlusion_query
@@ -1374,8 +1378,10 @@ struct wined3d_occlusion_query
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -6377,7 +6377,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
union wined3d_gl_query_object
@@ -1404,6 +1410,7 @@ struct wined3d_timestamp_query
@@ -1411,6 +1417,7 @@ struct wined3d_timestamp_query
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -6385,7 +6385,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
UINT64 timestamp;
};
@@ -1439,6 +1446,12 @@ static inline void wined3d_fb_copy(struct wined3d_fb_state *dst, const struct wi
@@ -1446,6 +1453,12 @@ static inline void wined3d_fb_copy(struct wined3d_fb_state *dst, const struct wi
for (i = 0; i < min(dst->rt_size, src->rt_size); i++)
dst->render_targets[i] = src->render_targets[i];
}
@ -6398,7 +6398,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_context
{
@@ -1454,7 +1467,9 @@ struct wined3d_context
@@ -1461,7 +1474,9 @@ struct wined3d_context
DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */
DWORD numDirtyEntries;
DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */
@ -6408,7 +6408,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_swapchain *swapchain;
struct
@@ -1562,6 +1577,14 @@ struct wined3d_context
@@ -1569,6 +1584,14 @@ struct wined3d_context
GLuint dummy_arbfp_prog;
};
@ -6423,7 +6423,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
struct StateEntry
@@ -1700,7 +1723,11 @@ void context_alloc_event_query(struct wined3d_context *context,
@@ -1707,7 +1730,11 @@ void context_alloc_event_query(struct wined3d_context *context,
void context_alloc_occlusion_query(struct wined3d_context *context,
struct wined3d_occlusion_query *query) DECLSPEC_HIDDEN;
void context_apply_blit_state(struct wined3d_context *context, const struct wined3d_device *device) DECLSPEC_HIDDEN;
@ -6435,7 +6435,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN;
BOOL context_apply_draw_state(struct wined3d_context *context,
const struct wined3d_device *device, const struct wined3d_state *state) DECLSPEC_HIDDEN;
@@ -2326,7 +2353,11 @@ struct wined3d_stream_state
@@ -2333,7 +2360,11 @@ struct wined3d_stream_state
struct wined3d_state
{
DWORD flags;
@ -6447,7 +6447,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_vertex_declaration *vertex_declaration;
struct wined3d_stream_output stream_output[MAX_STREAM_OUT];
@@ -2372,6 +2403,7 @@ struct wined3d_state
@@ -2379,6 +2410,7 @@ struct wined3d_state
DWORD render_states[WINEHIGHEST_RENDER_STATE + 1];
};
@ -6455,7 +6455,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_gl_bo
{
GLuint name;
@@ -2380,6 +2412,7 @@ struct wined3d_gl_bo
@@ -2387,6 +2419,7 @@ struct wined3d_gl_bo
UINT size;
};
@ -6463,7 +6463,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
#define WINED3D_UNMAPPED_STAGE ~0U
/* Multithreaded flag. Removed from the public header to signal that
@@ -2432,11 +2465,23 @@ struct wined3d_device
@@ -2439,11 +2472,23 @@ struct wined3d_device
struct wined3d_rendertarget_view *back_buffer_view;
struct wined3d_swapchain **swapchains;
UINT swapchain_count;
@ -6487,7 +6487,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* For rendering to a texture using glCopyTexImage */
GLuint depth_blt_texture;
@@ -2484,6 +2529,7 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
@@ -2491,6 +2536,7 @@ LRESULT device_process_message(struct wined3d_device *device, HWND window, BOOL
UINT message, WPARAM wparam, LPARAM lparam, WNDPROC proc) DECLSPEC_HIDDEN;
void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@ -6495,7 +6495,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN;
void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN;
void device_exec_update_texture(struct wined3d_context *context, struct wined3d_texture *src_texture,
@@ -2495,6 +2541,11 @@ void wined3d_device_release_bo(struct wined3d_device *device, struct wined3d_gl_
@@ -2502,6 +2548,11 @@ void wined3d_device_release_bo(struct wined3d_device *device, struct wined3d_gl_
void device_create_dummy_textures(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN;
void device_delete_opengl_contexts_cs(struct wined3d_device *device,
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
@ -6507,7 +6507,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
{
@@ -2538,7 +2589,11 @@ struct wined3d_resource
@@ -2545,7 +2596,11 @@ struct wined3d_resource
UINT depth;
UINT size;
DWORD priority;
@ -6519,7 +6519,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct list resource_list_entry;
LONG access_count;
@@ -2645,7 +2700,9 @@ struct wined3d_texture
@@ -2652,7 +2707,9 @@ struct wined3d_texture
DWORD flags;
GLenum target;
DWORD update_map_binding;
@ -6529,7 +6529,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
GLuint rb_multisample;
GLuint rb_resolved;
@@ -2683,8 +2740,12 @@ struct wined3d_texture
@@ -2690,8 +2747,12 @@ struct wined3d_texture
unsigned int map_count;
DWORD locations;
@ -6542,7 +6542,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
} sub_resources[1];
};
@@ -2735,6 +2796,7 @@ void wined3d_texture_bind(struct wined3d_texture *texture,
@@ -2742,6 +2803,7 @@ void wined3d_texture_bind(struct wined3d_texture *texture,
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture,
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
@ -6550,7 +6550,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_texture_changed(struct wined3d_texture *texture,
unsigned int sub_resource_idx, struct wined3d_gl_bo *swap_buffer,
void *swap_heap_memory) DECLSPEC_HIDDEN;
@@ -2744,6 +2806,13 @@ void wined3d_texture_get_dc_cs(struct wined3d_texture *texture, unsigned int sub
@@ -2751,6 +2813,13 @@ void wined3d_texture_get_dc_cs(struct wined3d_texture *texture, unsigned int sub
GLenum wined3d_texture_get_gl_buffer(const struct wined3d_texture *texture) DECLSPEC_HIDDEN;
void wined3d_texture_get_memory(struct wined3d_texture *texture, unsigned int sub_resource_idx,
struct wined3d_bo_address *data, DWORD locations, BOOL map) DECLSPEC_HIDDEN;
@ -6564,7 +6564,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_texture_sub_resource *wined3d_texture_get_sub_resource(struct wined3d_texture *texture,
unsigned int sub_resource_idx) DECLSPEC_HIDDEN;
void wined3d_texture_invalidate_location(struct wined3d_texture *texture,
@@ -2754,6 +2823,7 @@ void *wined3d_texture_map_bo_address(const struct wined3d_bo_address *data, size
@@ -2761,6 +2830,7 @@ void *wined3d_texture_map_bo_address(const struct wined3d_bo_address *data, size
const struct wined3d_gl_info *gl_info, GLenum binding, DWORD flags) DECLSPEC_HIDDEN;
BOOL wined3d_texture_prepare_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN;
@ -6572,7 +6572,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
BOOL wined3d_texture_load_location(struct wined3d_texture *texture, unsigned int sub_resource_idx,
struct wined3d_context *context, DWORD location);
void *wined3d_texture_map_internal(struct wined3d_texture *texture, unsigned int sub_resource_idx,
@@ -2769,6 +2839,15 @@ void wined3d_texture_unmap_bo_address(const struct wined3d_bo_address *data,
@@ -2776,6 +2846,15 @@ void wined3d_texture_unmap_bo_address(const struct wined3d_bo_address *data,
const struct wined3d_gl_info *gl_info, GLenum binding) DECLSPEC_HIDDEN;
void wined3d_texture_unmap_internal(struct wined3d_texture *texture,
unsigned int sub_resource_idx) DECLSPEC_HIDDEN;
@ -6588,7 +6588,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_texture_validate_location(struct wined3d_texture *texture,
unsigned int sub_resource_idx, DWORD location) DECLSPEC_HIDDEN;
@@ -2886,7 +2965,11 @@ void surface_get_drawable_size(const struct wined3d_surface *surface, const stru
@@ -2893,7 +2972,11 @@ void surface_get_drawable_size(const struct wined3d_surface *surface, const stru
unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN;
void surface_load_fb_texture(struct wined3d_surface *surface, BOOL srgb,
struct wined3d_context *context) DECLSPEC_HIDDEN;
@ -6600,7 +6600,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN;
void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN;
void surface_set_compatible_renderbuffer(struct wined3d_surface *surface,
@@ -2897,9 +2980,11 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P
@@ -2904,9 +2987,11 @@ HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const P
void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct wined3d_gl_info *gl_info,
const struct wined3d_format *format, const RECT *src_rect, UINT src_pitch, const POINT *dst_point,
BOOL srgb, const struct wined3d_const_bo_address *data) DECLSPEC_HIDDEN;
@ -6612,7 +6612,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
@@ -2914,10 +2999,12 @@ struct wined3d_sampler
@@ -2921,10 +3006,12 @@ struct wined3d_sampler
GLuint name;
};
@ -6625,7 +6625,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_vertex_declaration_element
{
const struct wined3d_format *format;
@@ -3013,6 +3100,7 @@ struct wined3d_stateblock
@@ -3020,6 +3107,7 @@ struct wined3d_stateblock
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -6633,7 +6633,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN;
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN;
@@ -3063,6 +3151,44 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HID
@@ -3070,6 +3158,44 @@ struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HID
void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, struct wined3d_context *context,
struct wined3d_surface *depth_stencil) DECLSPEC_HIDDEN;
@ -6678,7 +6678,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects,
DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;
@@ -3113,6 +3239,7 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform
@@ -3120,6 +3246,7 @@ void wined3d_cs_emit_set_transform(struct wined3d_cs *cs, enum wined3d_transform
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;
@ -6686,7 +6686,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, unsigned int start_idx,
unsigned int count, const struct wined3d_vec4 *constants, enum wined3d_shader_type type) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, unsigned int start_idx,
@@ -3168,6 +3295,14 @@ HRESULT wined3d_cs_emit_create_swapchain_context(struct wined3d_cs *cs,
@@ -3175,6 +3302,14 @@ HRESULT wined3d_cs_emit_create_swapchain_context(struct wined3d_cs *cs,
void wined3d_cs_emit_delete_opengl_contexts(struct wined3d_cs *cs,
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void wined3d_cs_emit_update_swap_interval(struct wined3d_cs *cs, struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
@ -6701,7 +6701,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
@@ -3182,8 +3317,12 @@ enum query_state {
@@ -3189,8 +3324,12 @@ enum query_state {
struct wined3d_query_ops
{
HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags);
@ -6714,7 +6714,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_query
@@ -3197,9 +3336,11 @@ struct wined3d_query
@@ -3204,9 +3343,11 @@ struct wined3d_query
enum wined3d_query_type type;
DWORD data_size;
void *extendedData;
@ -6726,7 +6726,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
@@ -3227,7 +3368,9 @@ struct wined3d_buffer
@@ -3234,7 +3375,9 @@ struct wined3d_buffer
GLenum buffer_object_usage;
GLenum buffer_type_hint;
DWORD flags;
@ -6736,7 +6736,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *map_ptr;
struct wined3d_map_range *maps;
@@ -3252,6 +3395,7 @@ void buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_context *co
@@ -3259,6 +3402,7 @@ void buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_context *co
BYTE *buffer_get_sysmem(struct wined3d_buffer *buffer, struct wined3d_context *context) DECLSPEC_HIDDEN;
void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_context *context,
const struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -6744,7 +6744,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT wined3d_buffer_copy(struct wined3d_buffer *dst_buffer, unsigned int dst_offset,
struct wined3d_buffer *src_buffer, unsigned int src_offset, unsigned int size) DECLSPEC_HIDDEN;
HRESULT wined3d_buffer_upload_data(struct wined3d_buffer *buffer,
@@ -3260,6 +3404,13 @@ void buffer_invalidate_bo_range(struct wined3d_buffer *buffer, unsigned int offs
@@ -3267,6 +3411,13 @@ void buffer_invalidate_bo_range(struct wined3d_buffer *buffer, unsigned int offs
void buffer_swap_mem(struct wined3d_buffer *buffer, BYTE *mem) DECLSPEC_HIDDEN;
void buffer_create_buffer_object(struct wined3d_buffer *This,
struct wined3d_context *context) DECLSPEC_HIDDEN;
@ -6758,7 +6758,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_rendertarget_view
{
@@ -3321,8 +3472,12 @@ struct wined3d_unordered_access_view
@@ -3328,8 +3479,12 @@ struct wined3d_unordered_access_view
struct wined3d_swapchain_ops
{
void (*swapchain_present)(struct wined3d_swapchain *swapchain,
@ -6771,7 +6771,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void (*swapchain_frontbuffer_updated)(struct wined3d_swapchain *swapchain);
};
@@ -3358,8 +3513,10 @@ struct wined3d_swapchain
@@ -3365,8 +3520,10 @@ struct wined3d_swapchain
void wined3d_swapchain_activate(struct wined3d_swapchain *swapchain, BOOL activate) DECLSPEC_HIDDEN;
struct wined3d_context *swapchain_get_context(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;