Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.

Commit eca6b99

Browse files
committed
Update pal from commit d543c4af
Fix some CodeQL alerts Do not try query value for empty components Add Gfxip Major.Minor.Stepping to DbgOverlay Add instruction timing flag to SqttData chunk Update submodule address-lib Refresh chip headers Restore the hard-coded AsicRevision values Remove the IsVirtual CP DMA checks Begin QueueTimings in the PAL Trace preparation phase Fix SetcutoffSeverityLevel/SetOriginationTypeMask Fix the random core dump of dEQP-VK.wsi.wayland.swapchain.render.10swapchains2 when enabling zwp_linux_dmabuf_v1_interface Remove UsesUavs check for DepthOnlyOpt GpuProfiler forces RequestDebugVMID Deprecate some unused fields in InheritedStateParams Tweak handling of PAL Private Pm4Opt key Support dynamic lds from DynamicSharedPointer Fix null-pointer access issue Check for nullptr in case MALLOC fails Update FileArchiveCacheLayer to fix some race conditions, corruption issues, and inefficiencies Advertise untypedBufferView separately in srdSizes Optimize CmdFillMemory Use Max(...) function instead of a recursive call Omit the DevDriver overlay if a RGP trace is actively running or if a PALTrace trace is actively running Disable OREO mode typedBufferView is bytes, not DWs Move ShouldUploadUsingDma to Device and Check for Valid Dma Upload Ring Update submodule devdriver Enable displayDcc by default except strix1 Update numWorkGroupsReg on a Per-Dispatch Basis Fix potential memleak in CrashAnalyzer Add strix1 support
1 parent d3bfe50 commit eca6b99

File tree

146 files changed

+95297
-3437
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

146 files changed

+95297
-3437
lines changed

cmake/PalBuildParameters.cmake

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,16 @@ if (PAL_BUILD_GFX9)
124124
endif()
125125
#endif
126126

127+
#if PAL_BUILD_STRIX1
128+
pal_bp( PAL_BUILD_STRIX1 OFF MODE "AUTHOR_WARNING"
129+
ASIC_CONFIG
130+
PAL_BUILD_GFX11
131+
PAL_BUILD_GFX115
132+
PAL_BUILD_STRIX
133+
CHIP_HDR_STRIX1
134+
)
135+
#endif
136+
127137
endif() # PAL_BUILD_GFX9
128138

129139
#if PAL_BUILD_RDF

cmake/PalCompileDefinitions.cmake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ function(pal_compile_definitions_gpu TARGET)
4949
#if PAL_BUILD_GFX11
5050
target_compile_definitions(${TARGET} INTERFACE PAL_BUILD_GFX11=$<BOOL:${PAL_BUILD_GFX11}>)
5151
#endif
52+
#if PAL_BUILD_GFX115
53+
target_compile_definitions(${TARGET} PUBLIC PAL_BUILD_GFX115=$<BOOL:${PAL_BUILD_GFX115}>)
54+
#endif
5255

5356
# PAL no longer references these defines and our clients must remove their references when upgrading.
5457
if (PAL_CLIENT_INTERFACE_MAJOR_VERSION LESS 845)
@@ -77,6 +80,16 @@ function(pal_compile_definitions_gpu TARGET)
7780
target_compile_definitions(${TARGET} INTERFACE PAL_BUILD_PHOENIX2=$<BOOL:${PAL_BUILD_GFX9}>)
7881
endif()
7982

83+
#if PAL_BUILD_STRIX
84+
# Define for ASIC Family and is not associated with a CHIP_HDR
85+
target_compile_definitions(${TARGET} PUBLIC PAL_BUILD_STRIX=$<BOOL:${PAL_BUILD_STRIX}>)
86+
#endif
87+
88+
#if PAL_BUILD_STRIX1
89+
target_compile_definitions(${TARGET} PUBLIC PAL_BUILD_STRIX1=$<BOOL:${PAL_BUILD_STRIX1}>)
90+
target_compile_definitions(${TARGET} PRIVATE CHIP_HDR_STRIX1=$<BOOL:${CHIP_HDR_STRIX1}>)
91+
#endif
92+
8093
endif()
8194
endfunction()
8295

cmake/PalOverrides.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,12 @@ if(PAL_BUILD_GFX9)
6161
set(PAL_SWD_BUILD_PHX1 ON)
6262
set(PAL_SWD_BUILD_PHX2 ON)
6363

64+
#if PAL_BUILD_STRIX1
65+
set(PAL_SWD_BUILD_STRIX1 ${PAL_BUILD_STRIX1})
66+
pal_set_or(ADDR_STRIX_BUILD ${PAL_BUILD_STRIX1})
67+
pal_set_or(ADDR_STRIX1_BUILD ${PAL_BUILD_STRIX1})
68+
pal_set_or(PAL_SWD_BUILD_STRIX ${PAL_BUILD_STRIX1})
69+
#endif
70+
6471
endif() # PAL_BUILD_GFX9
6572

inc/core/g_palPipelineAbiMetadataImpl.h

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -432,8 +432,11 @@ inline Result DeserializeEnum(
432432
case HashLiteralString("_amdgpu_cs_shdr_intrl_tbl"):
433433
*pValue = Abi::PipelineSymbolType::CsShdrIntrlTblPtr;
434434
break;
435-
case HashLiteralString("_amdgpu_ps_dual_source_shdr_intrl_tbl"):
436-
*pValue = Abi::PipelineSymbolType::PsDualSourceShdrIntrlTblPtr;
435+
case HashLiteralString("_amdgpu_ps_export_shader_shdr_intrl_tbl"):
436+
*pValue = Abi::PipelineSymbolType::PsExportShaderShdrIntrlTblPtr;
437+
break;
438+
case HashLiteralString("_amdgpu_ps_export_shader_dual_source_shdr_intrl_tbl"):
439+
*pValue = Abi::PipelineSymbolType::PsExportShaderDualSourceShdrIntrlTblPtr;
437440
break;
438441
case HashLiteralString("_amdgpu_ls_disasm"):
439442
*pValue = Abi::PipelineSymbolType::LsDisassembly;
@@ -456,8 +459,11 @@ inline Result DeserializeEnum(
456459
case HashLiteralString("_amdgpu_cs_disasm"):
457460
*pValue = Abi::PipelineSymbolType::CsDisassembly;
458461
break;
459-
case HashLiteralString("_amdgpu_ps_dual_source_disasm"):
460-
*pValue = Abi::PipelineSymbolType::PsDualSourceDisassembly;
462+
case HashLiteralString("_amdgpu_ps_export_shader_disasm"):
463+
*pValue = Abi::PipelineSymbolType::PsExportShaderDisassembly;
464+
break;
465+
case HashLiteralString("_amdgpu_ps_export_shader_dual_source_disasm"):
466+
*pValue = Abi::PipelineSymbolType::PsExportShaderDualSourceDisassembly;
461467
break;
462468
case HashLiteralString("_amdgpu_ls_shdr_intrl_data"):
463469
*pValue = Abi::PipelineSymbolType::LsShdrIntrlData;
@@ -550,8 +556,11 @@ inline Result SerializeEnum(
550556
case Abi::PipelineSymbolType::CsShdrIntrlTblPtr:
551557
pWriter->Pack("_amdgpu_cs_shdr_intrl_tbl");
552558
break;
553-
case Abi::PipelineSymbolType::PsDualSourceShdrIntrlTblPtr:
554-
pWriter->Pack("_amdgpu_ps_dual_source_shdr_intrl_tbl");
559+
case Abi::PipelineSymbolType::PsExportShaderShdrIntrlTblPtr:
560+
pWriter->Pack("_amdgpu_ps_export_shader_shdr_intrl_tbl");
561+
break;
562+
case Abi::PipelineSymbolType::PsExportShaderDualSourceShdrIntrlTblPtr:
563+
pWriter->Pack("_amdgpu_ps_export_shader_dual_source_shdr_intrl_tbl");
555564
break;
556565
case Abi::PipelineSymbolType::LsDisassembly:
557566
pWriter->Pack("_amdgpu_ls_disasm");
@@ -574,8 +583,11 @@ inline Result SerializeEnum(
574583
case Abi::PipelineSymbolType::CsDisassembly:
575584
pWriter->Pack("_amdgpu_cs_disasm");
576585
break;
577-
case Abi::PipelineSymbolType::PsDualSourceDisassembly:
578-
pWriter->Pack("_amdgpu_ps_dual_source_disasm");
586+
case Abi::PipelineSymbolType::PsExportShaderDisassembly:
587+
pWriter->Pack("_amdgpu_ps_export_shader_disasm");
588+
break;
589+
case Abi::PipelineSymbolType::PsExportShaderDualSourceDisassembly:
590+
pWriter->Pack("_amdgpu_ps_export_shader_dual_source_disasm");
579591
break;
580592
case Abi::PipelineSymbolType::LsShdrIntrlData:
581593
pWriter->Pack("_amdgpu_ls_shdr_intrl_data");

inc/core/palCmdBuffer.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,12 +494,13 @@ union InheritedStateFlags
494494
/// Specifies parameters inherited from primary command buffer into nested command buffer.
495495
struct InheritedStateParams
496496
{
497+
#if PAL_CLIENT_INTERFACE_MAJOR_VERSION < 891
497498
uint32 colorTargetCount; ///< Number of color targets bound in the
498499
/// root-level command buffer.
499500
SwizzledFormat colorTargetSwizzledFormats[MaxColorTargets]; ///< Format and swizzle for each color
500501
/// target.
501502
uint32 sampleCount[MaxColorTargets]; ///< Sample count for each color target.
502-
503+
#endif
503504
InheritedStateFlags stateFlags; ///< States that are inherited from the
504505
/// calling root-level command buffer.
505506
};

inc/core/palDeveloperHooks.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ enum class CallbackType : uint32
6969
BindGpuMemory, ///< This callback is to inform of a new binding to GPU memory.
7070
SubAllocGpuMemory, ///< This callback is to inform of suballocation from base GPU memory allocation.
7171
SubFreeGpuMemory, ///< This callback is to inform that GPU memory suballocation has been freed.
72+
7273
#if PAL_DEVELOPER_BUILD
7374
RpmBlt, ///< This callback is to describe the internal RPM blt calls.
7475
#endif

inc/core/palDevice.h

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,12 @@ struct PalPublicSettings
626626
/// that currently needs Escape call.
627627
bool disableEscapeCall;
628628

629+
/// A hint to the Windows OS that this application has submissions that are expected to run for a long time. This
630+
/// tells the OS that checking elapsed execution time is not a good way to judge if the GPU is hung.
631+
///
632+
/// If this flag is set, Windows shouldn't TDR long submissions on uncontested hardware queues. Submissions on
633+
/// contested queues must preempt within the time limit to avoid a TDR. Setting this may also extend the TDR timer
634+
/// on compute queues.
629635
bool longRunningSubmissions;
630636

631637
/// Disables MCBP on demand. This is a temporary setting until ATOMIC_MEM packet issue with MCBP is resolved.
@@ -1420,19 +1426,29 @@ struct DeviceProperties
14201426

14211427
struct
14221428
{
1423-
uint32 bufferView; ///< Size in bytes (and required alignment) of a buffer view SRD.
1424-
/// @see IDevice::CreateTypedBufferViewSrds() and CreateUntypedBufferViewSrds().
1425-
uint32 imageView; ///< Size in bytes (and required alignment) of an image view SRD.
1426-
/// @see IDevice::CreateImageViewSrds().
1427-
uint32 fmaskView; ///< Size in bytes (and required alignment) of an fmask view SRD.
1428-
/// @see IDevice::CreateFmaskViewSrds(). This value can be zero to denote
1429-
/// a lack of fMask support.
1430-
uint32 sampler; ///< Size in bytes (and required alignment) of a sampler SRD.
1431-
/// @see IDevice::CreateSamplerSrds().
1432-
uint32 bvh; ///< Size in bytes (and required alignment) of a BVH SRD
1433-
/// Will be zero if HW doesn't support ray-tracing capabilities.
1434-
/// @see IDevice::CreateBvhSrds().
1435-
} srdSizes; ///< Sizes for various types of _shader resource descriptor_ (SRD).
1429+
#if PAL_CLIENT_INTERFACE_MAJOR_VERSION < 892
1430+
union
1431+
{
1432+
uint32 bufferView;
1433+
#endif
1434+
uint32 typedBufferView; ///< Size in bytes (and required alignment) of a typed buffer view SRD.
1435+
/// @see IDevice::CreateTypedBufferViewSrds().
1436+
#if PAL_CLIENT_INTERFACE_MAJOR_VERSION < 892
1437+
};
1438+
#endif
1439+
uint32 untypedBufferView; ///< Size in bytes (and required alignment) of a untyped buffer view SRD.
1440+
/// @see IDevice::CreateUntypedBufferViewSrds().
1441+
uint32 imageView; ///< Size in bytes (and required alignment) of an image view SRD.
1442+
/// @see IDevice::CreateImageViewSrds().
1443+
uint32 fmaskView; ///< Size in bytes (and required alignment) of an fmask view SRD.
1444+
/// @see IDevice::CreateFmaskViewSrds(). This value can be zero to denote
1445+
/// a lack of fMask support.
1446+
uint32 sampler; ///< Size in bytes (and required alignment) of a sampler SRD.
1447+
/// @see IDevice::CreateSamplerSrds().
1448+
uint32 bvh; ///< Size in bytes (and required alignment) of a BVH SRD
1449+
/// Will be zero if HW doesn't support ray-tracing capabilities.
1450+
/// @see IDevice::CreateBvhSrds().
1451+
} srdSizes; ///< Sizes for various types of _shader resource descriptor_ (SRD).
14361452

14371453
struct
14381454
{
@@ -4097,8 +4113,8 @@ class IDevice
40974113

40984114
/// Creates one or more typed buffer view _shader resource descriptors (SRDs)_ in memory provided by the client.
40994115
///
4100-
/// The client is responsible for providing _count_ times the amount of memory reported by srdSizes.bufferView in
4101-
/// DeviceProperties, and must also ensure the provided memory is aligned to the size of one SRD.
4116+
/// The client is responsible for providing _count_ times the amount of memory reported by srdSizes.typedBufferView
4117+
/// in DeviceProperties, and must also ensure the provided memory is aligned to the size of one SRD.
41024118
///
41034119
/// The SRD can be created in either system memory or pre-mapped GPU memory. If updating GPU memory, the client
41044120
/// must ensure there are no GPU accesses of this memory in flight before calling this method.
@@ -4131,8 +4147,8 @@ class IDevice
41314147
/// Creates one or more untyped buffer view _shader resource descriptors (SRDs)_ in memory provided by the client.
41324148
/// These SRDs can be accessed in a shader as either _raw_ or _structured_ views.
41334149
///
4134-
/// The client is responsible for providing _count_ times the amount of memory reported by srdSizes.bufferView in
4135-
/// DeviceProperties, and must also ensure the provided memory is aligned to the size of one SRD.
4150+
/// The client is responsible for providing _count_ times the amount of memory reported by srdSizes.untypedBufferView
4151+
/// in DeviceProperties, and must also ensure the provided memory is aligned to the size of one SRD.
41364152
///
41374153
/// The SRD can be created in either system memory or pre-mapped GPU memory. If updating GPU memory, the client
41384154
/// must ensure there are no GPU accesses of this memory in flight before calling this method.

inc/core/palGpuMemory.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -567,11 +567,10 @@ class IGpuMemory : public IDestroyable
567567
/// Makes the GPU memory available for CPU access and gives the client a pointer to reference it.
568568
///
569569
/// The allocation should be unmapped by the client once CPU access is complete, although it _is_ legal to keep an
570-
/// allocation mapped while the GPU references the allocation from a command buffer. The allocation must be
571-
/// unmapped before it is destroyed.
570+
/// allocation mapped while the GPU references the allocation from a command buffer.
572571
///
573-
/// It is illegal to map the allocation multiple times concurrently. Mapping is not available for pinned or virtual
574-
/// memory objects. This call is not thread safe for calls referencing this memory object.
572+
/// It is legal to map the allocation multiple times concurrently. Mapping is not available for pinned or virtual
573+
/// memory objects. This call is thread safe for calls referencing this memory object.
575574
///
576575
/// @see Unmap.
577576
///
@@ -589,7 +588,7 @@ class IGpuMemory : public IDestroyable
589588

590589
/// Removes CPU access from a previously mapped GPU memory object.
591590
///
592-
/// This call is not thread safe for calls referencing the same memory object.
591+
/// This call is thread safe for calls referencing the same memory object.
593592
///
594593
/// @see Map
595594
///

inc/core/palHsaAbiMetadata.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ enum class ValueKind : uint32
7070
HiddenRemainderY, ///< Dispatch workgroup size of the partial work group of the Y dimension, if it exists.
7171
HiddenRemainderZ, ///< Dispatch workgroup size of the partial work group of the Z dimension, if it exists.
7272
HiddenGridDims, ///< Dispatch grid dimensionality, value between 1 and 3
73-
HiddenHeapV1 ///< Global address pointer to an initialized memory buffer for device side malloc/free
73+
HiddenHeapV1, ///< Global address pointer to an initialized memory buffer for device side malloc/free
74+
HiddenDynamicLdsSize ///< Size of the dynamically allocated LDS memory is passed in the kernarg.
7475
};
7576

7677
/// An enum of the legal ".address_space" strings.
@@ -207,7 +208,7 @@ class CodeObjectMetadata final
207208
uint32 GroupSegmentFixedSize() const { return m_groupSegmentFixedSize; }
208209

209210
/// Returns the amount of fixed private address space memory (scratch) required by a work-item in bytes.
210-
uint32 PrivateSegmentFixedSize() const { return m_privateSegmentFixedSize; }
211+
uint32 PrivateSegmentFixedSize() const;
211212

212213
uint32 UniformWorkgroupSize() const { return m_uniformWorkgroupSize; }
213214

inc/core/palLib.h

Lines changed: 58 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
#endif
4848
///
4949
/// @ingroup LibInit
50-
#define PAL_INTERFACE_MAJOR_VERSION 890
50+
#define PAL_INTERFACE_MAJOR_VERSION 892
5151

5252
#if PAL_CLIENT_INTERFACE_MAJOR_VERSION < 831
5353
/// Minor interface version. Note that the interface version is distinct from the PAL version itself, which is returned
@@ -126,6 +126,9 @@ enum class NullGpuId : uint32
126126
Navi33, ///< 11.0.2
127127
Phoenix1, ///< 11.0.3
128128
Phoenix2, ///< 11.0.3
129+
#if PAL_BUILD_STRIX1
130+
Strix1, ///< 11.5.0
131+
#endif
129132
#if (PAL_CLIENT_INTERFACE_MAJOR_VERSION>= 888)
130133
#endif
131134
Max, ///< The maximum count of null devices.
@@ -147,6 +150,9 @@ enum class GfxIpLevel : uint32
147150
GfxIp10_1, ///< GFXIP 10.1 (Navi1x)
148151
GfxIp10_3, ///< GFXIP 10.3 (Navi2x, Rembrandt, Raphael, Mendocino)
149152
GfxIp11_0, ///< GFXIP 11.0 (Navi3x, Phoenix)
153+
#if PAL_BUILD_GFX115
154+
GfxIp11_5, ///< GFXIP 11.5 (Strix)
155+
#endif
150156
#else // PAL_CLIENT_INTERFACE_MAJOR_VERSION >= 888
151157
GfxIp6 = 0x1,
152158
GfxIp7 = 0x2,
@@ -156,58 +162,64 @@ enum class GfxIpLevel : uint32
156162
GfxIp10_1 = 0x7,
157163
GfxIp10_3 = 0x9,
158164
GfxIp11_0 = 0xC,
165+
#if PAL_BUILD_GFX115
166+
GfxIp11_5 = 0xF,
167+
#endif
159168
#endif
160169
};
161170

162-
/// Specifies the hardware revision. Enumerations are in family order (Southern Islands, Sea Islands, Kaveri,
163-
/// Carrizo, Volcanic Islands, etc.)
171+
/// Specifies the hardware revision. Some AMD tools hard-code these values so we cannot change them. New ASICs should
172+
/// be added at the end of the list and be given the next highest value.
164173
enum class AsicRevision : uint32
165174
{
166-
Unknown = 0,
175+
Unknown = 0x00,
167176
#if PAL_CLIENT_INTERFACE_MAJOR_VERSION < 888
168-
Tahiti,
169-
Pitcairn,
170-
Capeverde,
171-
Oland,
172-
Hainan,
173-
Bonaire,
174-
Hawaii,
175-
HawaiiPro,
176-
Kalindi,
177-
Godavari,
178-
Spectre,
179-
Spooky,
180-
Carrizo,
181-
Bristol,
182-
Stoney,
183-
Iceland,
184-
Tonga,
185-
TongaPro = Tonga,
186-
Fiji,
187-
Polaris10,
188-
Polaris11,
189-
Polaris12,
190-
Vega10,
191-
Vega12,
192-
Vega20,
193-
Raven,
194-
Raven2,
195-
Renoir,
177+
Tahiti = 0x01,
178+
Pitcairn = 0x02,
179+
Capeverde = 0x03,
180+
Oland = 0x04,
181+
Hainan = 0x05,
182+
Bonaire = 0x06,
183+
Hawaii = 0x07,
184+
HawaiiPro = 0x08,
185+
Kalindi = 0x0A,
186+
Godavari = 0x0B,
187+
Spectre = 0x0C,
188+
Spooky = 0x0D,
189+
Carrizo = 0x0E,
190+
Bristol = 0x0F,
191+
Stoney = 0x10,
192+
Iceland = 0x11,
193+
Tonga = 0x12,
194+
TongaPro = Tonga,
195+
Fiji = 0x13,
196+
Polaris10 = 0x14,
197+
Polaris11 = 0x15,
198+
Polaris12 = 0x16,
199+
Vega10 = 0x18,
200+
Vega12 = 0x19,
201+
Vega20 = 0x1A,
202+
Raven = 0x1B,
203+
Raven2 = 0x1C,
204+
Renoir = 0x1D,
196205
#endif
197-
Navi10, ///< 10.1.0
198-
Navi12, ///< 10.1.1
199-
Navi14, ///< 10.1.2
200-
Navi21, ///< 10.3.0
201-
Navi22, ///< 10.3.1
202-
Navi23, ///< 10.3.2
203-
Navi24, ///< 10.3.4
204-
Rembrandt, ///< 10.3.5
205-
Raphael, ///< 10.3.6
206-
Navi31, ///< 11.0.0
207-
Navi32, ///< 11.0.1
208-
Navi33, ///< 11.0.2
209-
Phoenix1, ///< 11.0.3
210-
Phoenix2, ///< 11.0.3
206+
Navi10 = 0x1F, ///< 10.1.0
207+
Navi12 = 0x21, ///< 10.1.1
208+
Navi14 = 0x23, ///< 10.1.2
209+
Navi21 = 0x24, ///< 10.3.0
210+
Navi22 = 0x25, ///< 10.3.1
211+
Navi23 = 0x26, ///< 10.3.2
212+
Navi24 = 0x27, ///< 10.3.4
213+
Navi31 = 0x2C, ///< 11.0.0
214+
Navi32 = 0x2D, ///< 11.0.1
215+
Navi33 = 0x2E, ///< 11.0.2
216+
Rembrandt = 0x2F, ///< 10.3.5
217+
#if PAL_BUILD_STRIX1
218+
Strix1 = 0x33, ///< 11.5.0
219+
#endif
220+
Raphael = 0x34, ///< 10.3.6
221+
Phoenix1 = 0x35, ///< 11.0.3
222+
Phoenix2 = 0x38, ///< 11.0.3
211223
};
212224

213225
/// Maps a null GPU ID to its associated text name.

0 commit comments

Comments
 (0)