Skip to content

Commit 2edad68

Browse files
committed
Merge pull request #111658 from brycehutchings/bryceh_d3d12_native_handle_fixes
Fix D3D12 rendering device driver returning pointers to internal types for get_resource_native_handle instead of proper D3D12 primitives
2 parents 1340451 + 1f7e7de commit 2edad68

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

doc/classes/RenderingDevice.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,7 @@
11631163
<constant name="DRIVER_RESOURCE_COMMAND_QUEUE" value="3" enum="DriverResource">
11641164
The main graphics-compute command queue ([code]rid[/code] parameter is ignored).
11651165
- Vulkan: [code]VkQueue[/code].
1166+
- D3D12: [code]ID3D12CommandQueue[/code].
11661167
- Metal: [code]MTLCommandQueue[/code].
11671168
</constant>
11681169
<constant name="DRIVER_RESOURCE_QUEUE_FAMILY" value="4" enum="DriverResource">
@@ -1171,6 +1172,7 @@
11711172
</constant>
11721173
<constant name="DRIVER_RESOURCE_TEXTURE" value="5" enum="DriverResource">
11731174
- Vulkan: [code]VkImage[/code].
1175+
- D3D12: [code]ID3D12Resource[/code].
11741176
</constant>
11751177
<constant name="DRIVER_RESOURCE_TEXTURE_VIEW" value="6" enum="DriverResource">
11761178
The view of an owned or shared texture.

drivers/d3d12/rendering_device_driver_d3d12.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5751,14 +5751,18 @@ uint64_t RenderingDeviceDriverD3D12::get_resource_native_handle(DriverResource p
57515751
return 0;
57525752
}
57535753
case DRIVER_RESOURCE_COMMAND_QUEUE: {
5754-
return (uint64_t)p_driver_id.id;
5754+
const CommandQueueInfo *cmd_queue_info = (const CommandQueueInfo *)p_driver_id.id;
5755+
return (uint64_t)cmd_queue_info->d3d_queue.Get();
57555756
}
57565757
case DRIVER_RESOURCE_QUEUE_FAMILY: {
57575758
return 0;
57585759
}
57595760
case DRIVER_RESOURCE_TEXTURE: {
57605761
const TextureInfo *tex_info = (const TextureInfo *)p_driver_id.id;
5761-
return (uint64_t)tex_info->main_texture;
5762+
if (tex_info->main_texture) {
5763+
tex_info = tex_info->main_texture;
5764+
}
5765+
return (uint64_t)tex_info->resource;
57625766
} break;
57635767
case DRIVER_RESOURCE_TEXTURE_VIEW: {
57645768
const TextureInfo *tex_info = (const TextureInfo *)p_driver_id.id;

0 commit comments

Comments
 (0)