Skip to content

Commit fedac62

Browse files
committed
some corrections to init
1 parent 4f029c8 commit fedac62

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

include/nbl/builtin/hlsl/spirv_intrinsics/raytracing.hlsl

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ namespace hlsl
1313
namespace spirv
1414
{
1515

16+
//[[vk::ext_capability(spv::CapabilityRayQueryKHR)]] https://github.com/microsoft/DirectXShaderCompiler/issues/6958
1617
using RayQueryKHR = vk::SpirvOpaqueType<spv::OpTypeRayQueryKHR>;
18+
19+
//[[vk::ext_capability(spv::CapabilityAccelerationStructureKHR)]]
1720
using AccelerationStructureKHR = vk::SpirvOpaqueType<spv::OpTypeAccelerationStructureKHR>;
1821

1922
// matching Ray Query Committed Intersection Type
@@ -26,34 +29,46 @@ static const uint32_t RayQueryCandidateIntersectionTriangleKHR = 0;
2629
static const uint32_t RayQueryCandidateIntersectionAABBKHR = 1;
2730

2831
[[vk::ext_capability(spv::CapabilityRayQueryKHR)]]
32+
[[vk::ext_extension("SPV_KHR_ray_query")]]
2933
[[vk::ext_instruction(spv::OpRayQueryInitializeKHR)]]
30-
void rayQueryInitializeEXT([[vk::ext_reference]] RayQueryKHR query, [[vk::ext_reference]] AccelerationStructureKHR AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax);
34+
void rayQueryInitializeKHR([[vk::ext_reference]] RayQueryKHR query, [[vk::ext_reference]] AccelerationStructureKHR AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax);
3135

3236
[[vk::ext_capability(spv::CapabilityRayQueryKHR)]]
37+
[[vk::ext_extension("SPV_KHR_ray_query")]]
3338
[[vk::ext_instruction(spv::OpRayQueryInitializeKHR)]]
34-
void rayQueryInitializeEXT([[vk::ext_reference]] RayQueryKHR query, [[vk::ext_reference]] RaytracingAccelerationStructure AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax);
39+
void rayQueryInitializeKHR([[vk::ext_reference]] RayQueryKHR query, [[vk::ext_reference]] RaytracingAccelerationStructure AS, uint32_t flags, uint32_t cull mask, float3 origin, float32_t tmin, float3 direction, float32_t tmax);
3540

3641
[[vk::ext_capability(spv::CapabilityRayQueryKHR)]]
42+
[[vk::ext_extension("SPV_KHR_ray_query")]]
3743
[[vk::ext_instruction(spv::OpRayQueryProceedKHR)]]
38-
bool rayQueryProceedEXT([[vk::ext_reference]] RayQueryKHR query);
44+
bool rayQueryProceedKHR([[vk::ext_reference]] RayQueryKHR query);
3945

4046
[[vk::ext_capability(spv::CapabilityRayQueryKHR)]]
47+
[[vk::ext_extension("SPV_KHR_ray_query")]]
4148
[[vk::ext_instruction(spv::OpRayQueryGetIntersectionTypeKHR)]]
42-
int rayQueryGetIntersectionTypeEXT([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
49+
int rayQueryGetIntersectionTypeKHR([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
4350

4451
[[vk::ext_capability(spv::CapabilityRayQueryKHR)]]
52+
[[vk::ext_extension("SPV_KHR_ray_query")]]
4553
[[vk::ext_instruction(spv::OpRayQueryGetIntersectionInstanceIdKHR)]]
46-
int rayQueryGetIntersectionInstanceIdEXT([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
54+
int rayQueryGetIntersectionInstanceIdKHR([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
4755

4856
[[vk::ext_capability(spv::CapabilityRayQueryKHR)]]
57+
[[vk::ext_extension("SPV_KHR_ray_query")]]
4958
[[vk::ext_instruction(spv::OpRayQueryGetIntersectionPrimitiveIndexKHR)]]
50-
int rayQueryGetIntersectionPrimitiveIndexEXT([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
59+
int rayQueryGetIntersectionPrimitiveIndexKHR([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection);
5160

5261
// position fetch for ray tracing uses gl_HitTriangleVertexPositionsEXT -> HitTriangleVertexPositionsKHR decorated OpVariable
62+
[[vk::ext_builtin_input(spv::BuiltInHitTriangleVertexPositionsKHR)]]
63+
static const float32_t3 HitTriangleVertexPositionsKHR[3];
5364

5465
[[vk::ext_capability(spv::CapabilityRayQueryPositionFetchKHR)]]
66+
[[vk::ext_extension("SPV_KHR_ray_tracing_position_fetch")]]
5567
[[vk::ext_instruction(spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR)]] // ray query version
56-
void rayQueryGetIntersectionTriangleVertexPositionsEXT([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection, out float32_t3 pos[3]);
68+
void rayQueryGetIntersectionTriangleVertexPositionsKHR([[vk::ext_reference]] RayQueryKHR query, uint32_t intersection, out float32_t3 pos[3]);
69+
// how else would you pass an array of float3s?
70+
// attempting to compile this with usage on godbolt gives: fatal error: failed to legalize SPIR-V: Id 3346 is defined more than once
71+
// but without usage is fine
5772

5873
}
5974
}

src/nbl/video/CVulkanPhysicalDevice.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1572,6 +1572,9 @@ core::smart_refctd_ptr<ILogicalDevice> CVulkanPhysicalDevice::createLogicalDevic
15721572
&rasterizationOrderAttachmentAccessFeatures
15731573
);
15741574

1575+
VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR rayTracingPositionFetchFeatures = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR, nullptr };
1576+
REQUIRE_EXTENSION_IF(enabledFeatures.accelerationStructure && m_initData.properties.limits.rayTracingPositionFetch, VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME, &rayTracingPositionFetchFeatures);
1577+
15751578
VkPhysicalDeviceColorWriteEnableFeaturesEXT colorWriteEnableFeatures = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,nullptr };
15761579
enableExtensionIfAvailable(VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME,&colorWriteEnableFeatures);
15771580
#if 0
@@ -1757,6 +1760,8 @@ core::smart_refctd_ptr<ILogicalDevice> CVulkanPhysicalDevice::createLogicalDevic
17571760

17581761
rayQueryFeatures.rayQuery = enabledFeatures.rayQuery;
17591762

1763+
rayTracingPositionFetchFeatures.rayTracingPositionFetch = limits.rayTracingPositionFetch;
1764+
17601765
//shaderSMBuiltinsFeaturesNV [LIMIT SO ENABLE EVERYTHING BY DEFAULT]
17611766

17621767
representativeFragmentTestFeatures.representativeFragmentTest = enabledFeatures.representativeFragmentTest;

0 commit comments

Comments
 (0)