Skip to content

Commit 3a7fdda

Browse files
[SYCLomatic][Graphics Interop][Driver] Added migration support for CUDA driver Graphics APIs/types used in Blender (#2610)
1 parent 61ed44d commit 3a7fdda

17 files changed

Lines changed: 256 additions & 14 deletions
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Option: --use-experimental-features=bindless_images
2+
3+
void test(int c, CUgraphicsResource *r, CUstream s) {
4+
// Start
5+
cuGraphicsMapResources(c /*int*/,
6+
r /*CUgraphicsResource **/,
7+
s /*CUstream*/);
8+
// End
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Option: --use-experimental-features=bindless_images
2+
3+
void test(CUdeviceptr ptr, size_t *s, CUgraphicsResource r) {
4+
// Start
5+
cuGraphicsResourceGetMappedPointer(&ptr /*CUdeviceptr **/,
6+
s /*size_t **/,
7+
r /*CUgraphicsResource*/);
8+
// End
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Option: --use-experimental-features=bindless_images
2+
3+
void test(int c, CUgraphicsResource *r, CUstream s) {
4+
// Start
5+
cuGraphicsUnmapResources(c /*int*/,
6+
r /*CUgraphicsResource **/,
7+
s /*CUstream*/);
8+
// End
9+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Option: --use-experimental-features=bindless_images
2+
3+
void test(CUgraphicsResource r) {
4+
// Start
5+
cuGraphicsUnregisterResource(r /*CUgraphicsResource*/);
6+
// End
7+
}

clang/lib/DPCT/RuleInfra/APINamesTemplateType.inc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@ TYPE_REWRITE_ENTRY(
474474
WARNING_FACTORY(Diagnostics::TRY_EXPERIMENTAL_FEATURE, TYPESTR,
475475
STR("--use-experimental-features=graph"))))
476476

477+
// Graphics Interop Handle
477478
TYPE_REWRITE_ENTRY(
478479
"cudaGraphicsResource",
479480
TYPE_CONDITIONAL_FACTORY(
@@ -497,6 +498,20 @@ TYPE_REWRITE_ENTRY(
497498
Diagnostics::TRY_EXPERIMENTAL_FEATURE, TYPESTR,
498499
STR("--use-experimental-features=bindless_images")))))
499500

501+
TYPE_REWRITE_ENTRY(
502+
"CUgraphicsResource",
503+
TYPE_CONDITIONAL_FACTORY(
504+
[](const TypeLoc) { return DpctGlobalInfo::useSYCLCompat(); },
505+
WARNING_FACTORY(Diagnostics::UNSUPPORT_SYCLCOMPAT,
506+
STR("CUgraphicsResource")),
507+
TYPE_CONDITIONAL_FACTORY(
508+
checkEnableBindlessImagesForType(),
509+
TYPE_FACTORY(STR(MapNames::getDpctNamespace() +
510+
"experimental::external_mem_wrapper_ptr")),
511+
WARNING_FACTORY(
512+
Diagnostics::TRY_EXPERIMENTAL_FEATURE, TYPESTR,
513+
STR("--use-experimental-features=bindless_images")))))
514+
500515
// External Resource Handle Descs
501516
TYPE_REWRITE_ENTRY(
502517
"cudaExternalMemory_t",

clang/lib/DPCT/RuleInfra/TypeLocRewriters.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ void initTypeLocSYCLCompatRewriterMap(
343343
SYCLCOMPAT_UNSUPPORT("cudaGraphNode_t")
344344
SYCLCOMPAT_UNSUPPORT("cudaGraphicsResource")
345345
SYCLCOMPAT_UNSUPPORT("cudaGraphicsResource_t")
346+
SYCLCOMPAT_UNSUPPORT("CUgraphicsResource")
346347
SYCLCOMPAT_UNSUPPORT("cudaExternalMemory_t")
347348
SYCLCOMPAT_UNSUPPORT("cudaExternalMemoryHandleDesc")
348349
SYCLCOMPAT_UNSUPPORT("cudaExternalMemoryMipmappedArrayDesc")

clang/lib/DPCT/RulesLang/APINamesGraphicsInterop.inc

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,17 @@ ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
4949
ARG("cudaGraphicsMapResources"),
5050
ARG("--use-experimental-features=bindless_images"))))
5151

52+
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
53+
UseExtBindlessImages,
54+
CALL_FACTORY_ENTRY("cuGraphicsMapResources",
55+
CALL(MapNames::getDpctNamespace() +
56+
"experimental::map_resources",
57+
ARG(0), ARG(1), ARG(2))),
58+
UNSUPPORT_FACTORY_ENTRY(
59+
"cuGraphicsMapResources", Diagnostics::TRY_EXPERIMENTAL_FEATURE,
60+
ARG("cuGraphicsMapResources"),
61+
ARG("--use-experimental-features=bindless_images"))))
62+
5263
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
5364
UseExtBindlessImages,
5465
MEMBER_CALL_FACTORY_ENTRY(
@@ -59,6 +70,16 @@ ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
5970
ARG("cudaGraphicsResourceGetMappedPointer"),
6071
ARG("--use-experimental-features=bindless_images"))))
6172

73+
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
74+
UseExtBindlessImages,
75+
MEMBER_CALL_FACTORY_ENTRY(
76+
"cuGraphicsResourceGetMappedPointer_v2",
77+
ARG(2), true, "get_mapped_pointer", CAST(makeLiteral("void **"), ARG(0)), ARG(1)),
78+
UNSUPPORT_FACTORY_ENTRY(
79+
"cuGraphicsResourceGetMappedPointer_v2", Diagnostics::TRY_EXPERIMENTAL_FEATURE,
80+
ARG("cuGraphicsResourceGetMappedPointer_v2"),
81+
ARG("--use-experimental-features=bindless_images"))))
82+
6283
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
6384
UseExtBindlessImages,
6485
ASSIGNABLE_FACTORY(ASSIGN_FACTORY_ENTRY(
@@ -96,6 +117,17 @@ ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
96117
ARG("cudaGraphicsUnmapResources"),
97118
ARG("--use-experimental-features=bindless_images"))))
98119

120+
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
121+
UseExtBindlessImages,
122+
CALL_FACTORY_ENTRY("cuGraphicsUnmapResources",
123+
CALL(MapNames::getDpctNamespace() +
124+
"experimental::unmap_resources",
125+
ARG(0), ARG(1), ARG(2))),
126+
UNSUPPORT_FACTORY_ENTRY(
127+
"cuGraphicsUnmapResources", Diagnostics::TRY_EXPERIMENTAL_FEATURE,
128+
ARG("cuGraphicsUnmapResources"),
129+
ARG("--use-experimental-features=bindless_images"))))
130+
99131
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
100132
UseExtBindlessImages,
101133
DELETER_FACTORY_ENTRY("cudaGraphicsUnregisterResource", ARG(0)),
@@ -104,6 +136,14 @@ ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
104136
ARG("cudaGraphicsUnregisterResource"),
105137
ARG("--use-experimental-features=bindless_images"))))
106138

139+
ASSIGNABLE_FACTORY(CONDITIONAL_FACTORY_ENTRY(
140+
UseExtBindlessImages,
141+
DELETER_FACTORY_ENTRY("cuGraphicsUnregisterResource", ARG(0)),
142+
UNSUPPORT_FACTORY_ENTRY(
143+
"cuGraphicsUnregisterResource", Diagnostics::TRY_EXPERIMENTAL_FEATURE,
144+
ARG("cuGraphicsUnregisterResource"),
145+
ARG("--use-experimental-features=bindless_images"))))
146+
107147
// External Resource APIs
108148
CONDITIONAL_FACTORY_ENTRY(
109149
UseExtBindlessImages,

clang/lib/DPCT/RulesLang/RulesLang.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ void TypeInDeclRule::registerMatcher(MatchFinder &MF) {
355355
"cooperative_groups::__v1::grid_group",
356356
"cooperative_groups::__v1::thread_block_tile", "cudaGraph_t",
357357
"cudaGraphExec_t", "cudaGraphNode_t", "cudaGraphicsResource",
358-
"cudaGraphicsResource_t", "cudaExternalMemory_t",
359-
"cudaExternalMemoryHandleDesc",
358+
"cudaGraphicsResource_t", "CUgraphicsResource",
359+
"cudaExternalMemory_t", "cudaExternalMemoryHandleDesc",
360360
"cudaExternalMemoryMipmappedArrayDesc",
361361
"cudaExternalMemoryBufferDesc"))))))
362362
.bind("cudaTypeDefEA"),

clang/lib/DPCT/RulesLang/RulesLangGraphicsInterop.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,13 @@ void GraphicsInteropRule::registerMatcher(ast_matchers::MatchFinder &MF) {
5050
auto graphicsInteropAPI = [&]() {
5151
return hasAnyName(
5252
"cudaGraphicsD3D11RegisterResource", "cudaGraphicsResourceSetMapFlags",
53-
"cudaGraphicsMapResources", "cudaGraphicsResourceGetMappedPointer",
53+
"cudaGraphicsMapResources", "cuGraphicsMapResources",
54+
"cudaGraphicsResourceGetMappedPointer",
55+
"cuGraphicsResourceGetMappedPointer_v2",
5456
"cudaGraphicsResourceGetMappedMipmappedArray",
5557
"cudaGraphicsSubResourceGetMappedArray", "cudaGraphicsUnmapResources",
56-
"cudaGraphicsUnregisterResource", "cudaImportExternalMemory",
58+
"cuGraphicsUnmapResources", "cudaGraphicsUnregisterResource",
59+
"cuGraphicsUnregisterResource", "cudaImportExternalMemory",
5760
"cudaExternalMemoryGetMappedMipmappedArray",
5861
"cudaExternalMemoryGetMappedBuffer", "cudaDestroyExternalMemory");
5962
};

clang/lib/DPCT/SrcAPI/APINames.inc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2008,13 +2008,13 @@ ENTRY(cuDeviceCanAccessPeer, cuDeviceCanAccessPeer, true, NO_FLAG, P4, "DPCT1031
20082008
ENTRY(cuDeviceGetP2PAttribute, cuDeviceGetP2PAttribute, false, NO_FLAG, P4, "comment")
20092009

20102010
// Graphics Interoperability
2011-
ENTRY(cuGraphicsMapResources, cuGraphicsMapResources, false, NO_FLAG, P4, "comment")
2011+
ENTRY(cuGraphicsMapResources, cuGraphicsMapResources, true, NO_FLAG, P4, "successful/DPCT1119")
20122012
ENTRY(cuGraphicsResourceGetMappedMipmappedArray, cuGraphicsResourceGetMappedMipmappedArray, false, NO_FLAG, P4, "comment")
2013-
ENTRY(cuGraphicsResourceGetMappedPointer, cuGraphicsResourceGetMappedPointer_v2, false, NO_FLAG, P4, "comment")
2013+
ENTRY(cuGraphicsResourceGetMappedPointer, cuGraphicsResourceGetMappedPointer_v2, true, NO_FLAG, P4, "successful/DPCT1119")
20142014
ENTRY(cuGraphicsResourceSetMapFlags, cuGraphicsResourceSetMapFlags_v2, false, NO_FLAG, P4, "comment")
20152015
ENTRY(cuGraphicsSubResourceGetMappedArray, cuGraphicsSubResourceGetMappedArray, false, NO_FLAG, P4, "comment")
2016-
ENTRY(cuGraphicsUnmapResources, cuGraphicsUnmapResources, false, NO_FLAG, P4, "comment")
2017-
ENTRY(cuGraphicsUnregisterResource, cuGraphicsUnregisterResource, false, NO_FLAG, P4, "comment")
2016+
ENTRY(cuGraphicsUnmapResources, cuGraphicsUnmapResources, true, NO_FLAG, P4, "successful/DPCT1119")
2017+
ENTRY(cuGraphicsUnregisterResource, cuGraphicsUnregisterResource, true, NO_FLAG, P4, "successful/DPCT1119")
20182018

20192019
// Driver Entry Point Access
20202020
ENTRY(cuGetProcAddress, cuGetProcAddress, false, NO_FLAG, P7, "comment")

0 commit comments

Comments
 (0)