You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
nvcuda-CUDA_Support: Added patch for Unknown5 internal CUDA interface.
This commit is contained in:
@@ -88,7 +88,7 @@ PATCHLIST := \
|
||||
ntoskrnl-KeSetSystemAffinityThread.ok \
|
||||
ntoskrnl-Stub_FileObject.ok \
|
||||
ntoskrnl-Write_CR4.ok \
|
||||
nvcuda.ok \
|
||||
nvcuda-CUDA_Support.ok \
|
||||
ole32-CoWaitForMultipleHandles.ok \
|
||||
quartz-MediaSeeking_Positions.ok \
|
||||
riched20-IText_Interface.ok \
|
||||
@@ -1376,18 +1376,20 @@ ntoskrnl-Write_CR4.ok:
|
||||
echo '+ { "Stefan Leichter", "ntoskrnl.exe: Emulate write to CR4 register.", 1 },'; \
|
||||
) > ntoskrnl-Write_CR4.ok
|
||||
|
||||
# Patchset nvcuda
|
||||
# Patchset nvcuda-CUDA_Support
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure.ac, dlls/nvcuda/Makefile.in, dlls/nvcuda/internal.c, dlls/nvcuda/nvcuda.c, dlls/nvcuda/nvcuda.h,
|
||||
# | dlls/nvcuda/nvcuda.rc, dlls/nvcuda/nvcuda.spec, dlls/nvcuda/tests/Makefile.in, dlls/nvcuda/tests/nvcuda.c
|
||||
# |
|
||||
.INTERMEDIATE: nvcuda.ok
|
||||
nvcuda.ok:
|
||||
$(call APPLY_FILE,nvcuda/0001-nvcuda-First-implementation.patch)
|
||||
.INTERMEDIATE: nvcuda-CUDA_Support.ok
|
||||
nvcuda-CUDA_Support.ok:
|
||||
$(call APPLY_FILE,nvcuda-CUDA_Support/0001-nvcuda-First-implementation.patch)
|
||||
$(call APPLY_FILE,nvcuda-CUDA_Support/0002-nvcuda-Add-Unknown5-internal-interface.patch)
|
||||
@( \
|
||||
echo '+ { "Michael Müller", "nvcuda: First implementation.", 1 },'; \
|
||||
) > nvcuda.ok
|
||||
echo '+ { "Michael Müller", "nvcuda: Add Unknown5 internal interface.", 1 },'; \
|
||||
) > nvcuda-CUDA_Support.ok
|
||||
|
||||
# Patchset ole32-CoWaitForMultipleHandles
|
||||
# |
|
||||
|
@@ -0,0 +1,85 @@
|
||||
From cfce86cc5bde3a614bba4a7a20a38d78040afbc2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Fri, 2 Jan 2015 21:48:23 +0100
|
||||
Subject: nvcuda: Add Unknown5 internal interface.
|
||||
|
||||
---
|
||||
dlls/nvcuda/internal.c | 41 ++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 40 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/nvcuda/internal.c b/dlls/nvcuda/internal.c
|
||||
index 6e4f0e0..6f9e388 100755
|
||||
--- a/dlls/nvcuda/internal.c
|
||||
+++ b/dlls/nvcuda/internal.c
|
||||
@@ -98,6 +98,8 @@ static const CUuuid UUID_Unknown4 = {{0xC6, 0x93, 0x33, 0x6E,
|
||||
0xA8, 0xC3, 0x68, 0xF3, 0x55, 0xD8, 0x95, 0x93}};
|
||||
static const CUuuid UUID_TlsNotifyInterface = {{0x19, 0x5B, 0xCB, 0xF4, 0xD6, 0x7D, 0x02, 0x4A,
|
||||
0xAC, 0xC5, 0x1D, 0x29, 0xCE, 0xA6, 0x31, 0xAE}};
|
||||
+static const CUuuid UUID_Unknown5 = {{0x0C, 0xA5, 0x0B, 0x8C, 0x10, 0x04, 0x92, 0x9A,
|
||||
+ 0x89, 0xA7, 0xD0, 0xDF, 0x10, 0xE7, 0x72, 0x86}};
|
||||
|
||||
struct cuda_table
|
||||
{
|
||||
@@ -193,6 +195,20 @@ struct TlsNotifyInterface_table
|
||||
CUresult (WINAPI *Remove)(void *handle, void *param1);
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * Unknown5
|
||||
+ */
|
||||
+struct Unknown5_table
|
||||
+{
|
||||
+ int size;
|
||||
+ void* (WINAPI *func0)(void *param0, void *param1, void *param2);
|
||||
+};
|
||||
+static const struct
|
||||
+{
|
||||
+ int size;
|
||||
+ void* (*func0)(void *param0, void *param1, void *param2);
|
||||
+} *Unknown5_orig = NULL;
|
||||
+
|
||||
void* WINAPI Unknown1_func0_relay(void *param0, void *param1)
|
||||
{
|
||||
TRACE("(%p, %p)\n", param0, param1);
|
||||
@@ -396,6 +412,18 @@ struct TlsNotifyInterface_table TlsNotifyInterface_Impl =
|
||||
TlsNotifyInterface_Remove,
|
||||
};
|
||||
|
||||
+void* WINAPI Unknown5_func0_relay(void *param0, void *param1, void *param2)
|
||||
+{
|
||||
+ TRACE("(%p, %p, %p)\n", param0, param1, param2);
|
||||
+ return Unknown5_orig->func0(param0, param1, param2);
|
||||
+}
|
||||
+
|
||||
+struct Unknown5_table Unknown5_Impl =
|
||||
+{
|
||||
+ sizeof(struct Unknown5_table),
|
||||
+ Unknown5_func0_relay,
|
||||
+};
|
||||
+
|
||||
static BOOL cuda_check_table(const struct cuda_table *orig, struct cuda_table *impl, const char *name)
|
||||
{
|
||||
if (!orig)
|
||||
@@ -487,7 +515,18 @@ CUresult cuda_get_table(const void **table, const CUuuid *uuid, const void *orig
|
||||
*table = (void *)&TlsNotifyInterface_Impl;
|
||||
return CUDA_SUCCESS;
|
||||
}
|
||||
+ else if (cuda_equal_uuid(uuid, &UUID_Unknown5))
|
||||
+ {
|
||||
+ if (orig_result)
|
||||
+ return orig_result;
|
||||
+ if (!cuda_check_table(orig_table, (void *)&Unknown5_Impl, "Unknown5"))
|
||||
+ return CUDA_ERROR_UNKNOWN;
|
||||
+
|
||||
+ Unknown5_orig = orig_table;
|
||||
+ *table = (void *)&Unknown5_Impl;
|
||||
+ return CUDA_SUCCESS;
|
||||
+ }
|
||||
|
||||
- FIXME("Unknown UUID: %s\n", cuda_print_uuid(uuid, buffer, sizeof(buffer)));
|
||||
+ FIXME("Unknown UUID: %s, error: %d\n", cuda_print_uuid(uuid, buffer, sizeof(buffer)), orig_result);
|
||||
return CUDA_ERROR_UNKNOWN;
|
||||
}
|
||||
--
|
||||
2.2.1
|
||||
|
1
patches/nvcuda-CUDA_Support/definition
Normal file
1
patches/nvcuda-CUDA_Support/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: Basic support for CUDA
|
Reference in New Issue
Block a user