nvcuda-CUDA_Support: Added patch for Unknown5 internal CUDA interface.

This commit is contained in:
Sebastian Lackner 2015-01-02 22:00:32 +01:00
parent 21ab9dc521
commit aa13fb8472
6 changed files with 97 additions and 8 deletions

View File

@ -37,11 +37,12 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
===================================
**Bugfixes and features included in the next upcoming release [18]:**
**Bugfixes and features included in the next upcoming release [19]:**
* Add stub for D3DXComputeNormalMap
* Add stub for D3DXComputeTangentFrameEx ([Wine Bug #31984](https://bugs.winehq.org/show_bug.cgi?id=31984))
* Add stub for D3DXIntersect
* Basic support for CUDA
* Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854))
* Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
* Fix access violation when calling GetStringTypeW with NULL src. ([Wine Bug #37759](https://bugs.winehq.org/show_bug.cgi?id=37759))

2
debian/changelog vendored
View File

@ -24,7 +24,7 @@ wine-staging (1.7.34) UNRELEASED; urgency=low
* Added patch to fix access violation when calling GetStringTypeW with NULL src.
* Added patch for ID3DXFont::DrawTextA/W support.
* Added patch to fix parameters for ConvertToIndexedBlendedMesh stub.
* Added patch for nvcuda.
* Added patch for basic CUDA support.
* Added patches for D3DXComputeNormals and D3DXComputeNormalMap.
* Removed patch to implement combase HSTRING objects (accepted upstream).
* Removed patch to add fake ProductId to registry (accepted upstream).

View File

@ -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
# |

View File

@ -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

View File

@ -0,0 +1 @@
Fixes: Basic support for CUDA