Skip to content

Commit d31cbd4

Browse files
Merge pull request #1439 from TP-David/RayTracingValidationErrors
Fix ray tracing validation errors
2 parents d4f5ee7 + 44dd691 commit d31cbd4

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/vsg/raytracing/AccelerationGeometry.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,17 @@ void AccelerationGeometry::compile(Context& context)
5555
auto vertexBufferInfo = vsg::createBufferAndTransferData(context, vertexDataList, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_SHARING_MODE_EXCLUSIVE);
5656
auto indexBufferInfo = vsg::createBufferAndTransferData(context, indexDataList, VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_SHARING_MODE_EXCLUSIVE);
5757
#else
58-
auto vertexBufferInfo = vsg::createHostVisibleBuffer(context.device, vertexDataList, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, VK_SHARING_MODE_EXCLUSIVE);
58+
auto vertexBufferInfo = vsg::createHostVisibleBuffer(context.device, vertexDataList,
59+
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT |
60+
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT |
61+
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR,
62+
VK_SHARING_MODE_EXCLUSIVE);
5963
vsg::copyDataListToBuffers(context.device, vertexBufferInfo);
60-
auto indexBufferInfo = vsg::createHostVisibleBuffer(context.device, indexDataList, VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, VK_SHARING_MODE_EXCLUSIVE);
64+
auto indexBufferInfo = vsg::createHostVisibleBuffer(context.device, indexDataList,
65+
VK_BUFFER_USAGE_INDEX_BUFFER_BIT |
66+
VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT |
67+
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR,
68+
VK_SHARING_MODE_EXCLUSIVE);
6169
vsg::copyDataListToBuffers(context.device, indexBufferInfo);
6270
#endif
6371

src/vsg/state/Buffer.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,11 @@ ref_ptr<Buffer> vsg::createBufferAndMemory(Device* device, VkDeviceSize size, Vk
158158
auto buffer = vsg::Buffer::create(size, usage, sharingMode);
159159
buffer->compile(device);
160160

161+
VkMemoryAllocateFlagsInfo memFlags = { VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO };
162+
memFlags.flags = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT;
163+
161164
auto memRequirements = buffer->getMemoryRequirements(device->deviceID);
162-
auto memory = vsg::DeviceMemory::create(device, memRequirements, memoryProperties);
165+
auto memory = vsg::DeviceMemory::create(device, memRequirements, memoryProperties, &memFlags);
163166

164167
buffer->bind(memory, 0);
165168
return buffer;

0 commit comments

Comments
 (0)