writing ui descriptors
This commit is contained in:
parent
9d43f2e44b
commit
3f4ad87746
1 changed files with 30 additions and 120 deletions
|
|
@ -69,9 +69,9 @@ int main() {
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
for(std::uint8_t i = 0; i < Window::numFrames; i++) {
|
for(std::uint8_t i = 0; i < Window::numFrames; i++) {
|
||||||
element.buffers[i]->value[0] = {1, 0, 0, 1};
|
reinterpret_cast<VulkanBuffer<Vector<_Float16, 4, 4>, true>*>(element.buffers[i])->value[0] = {1, 0, 0, 1};
|
||||||
element.buffers[i]->value[1] = {0, 1, 0, 1};
|
reinterpret_cast<VulkanBuffer<Vector<_Float16, 4, 4>, true>*>(element.buffers[i])->value[1] = {0, 1, 0, 1};
|
||||||
element.buffers[i]->FlushDevice();
|
reinterpret_cast<VulkanBuffer<Vector<_Float16, 4, 4>, true>*>(element.buffers[i])->FlushDevice();
|
||||||
}
|
}
|
||||||
|
|
||||||
InitializeRenderingElement2DVulkanBuffer();
|
InitializeRenderingElement2DVulkanBuffer();
|
||||||
|
|
@ -99,128 +99,38 @@ int main() {
|
||||||
.layout = VK_IMAGE_LAYOUT_GENERAL
|
.layout = VK_IMAGE_LAYOUT_GENERAL
|
||||||
};
|
};
|
||||||
|
|
||||||
VkDeviceAddressRangeKHR transformRange0 = {
|
std::array<VkResourceDescriptorInfoEXT, 9> infos;
|
||||||
.address = renderingElement2DVulkanTransformBuffer[0].address,
|
infos[0] = {
|
||||||
.size = renderingElement2DVulkanTransformBuffer[0].descriptor.range
|
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
||||||
|
.type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
|
||||||
|
.data = { .pImage = &imageInfo0 }
|
||||||
|
};
|
||||||
|
infos[1] = {
|
||||||
|
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
||||||
|
.type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
|
||||||
|
.data = { .pImage = &imageInfo1 }
|
||||||
|
};
|
||||||
|
infos[2] = {
|
||||||
|
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
||||||
|
.type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
|
||||||
|
.data = { .pImage = &imageInfo2 }
|
||||||
};
|
};
|
||||||
|
|
||||||
VkDeviceAddressRangeKHR transformRange1 = {
|
std::array<VkHostAddressRangeEXT, 9> ranges;
|
||||||
.address = renderingElement2DVulkanTransformBuffer[1].address,
|
ranges[0] = {
|
||||||
.size = renderingElement2DVulkanTransformBuffer[1].descriptor.range
|
.address = descriptorHeap.resourceHeap[0].value,
|
||||||
|
.size = Device::descriptorHeapProperties.imageDescriptorSize
|
||||||
};
|
};
|
||||||
|
ranges[1] = {
|
||||||
|
.address = descriptorHeap.resourceHeap[1].value,
|
||||||
|
.size = Device::descriptorHeapProperties.imageDescriptorSize
|
||||||
|
},
|
||||||
|
ranges[2] = {
|
||||||
|
.address = descriptorHeap.resourceHeap[2].value,
|
||||||
|
.size = Device::descriptorHeapProperties.imageDescriptorSize
|
||||||
|
},
|
||||||
|
|
||||||
VkDeviceAddressRangeKHR transformRange2 = {
|
WriteRenderingElement2DVulkanDescriptors(infos, ranges, 3, descriptorHeap.bufferStartOffset, descriptorHeap);
|
||||||
.address = renderingElement2DVulkanTransformBuffer[2].address,
|
|
||||||
.size = renderingElement2DVulkanTransformBuffer[2].descriptor.range
|
|
||||||
};
|
|
||||||
|
|
||||||
VkDeviceAddressRangeKHR elRange0 = {
|
|
||||||
.address = element.buffers[0]->address,
|
|
||||||
.size = element.buffers[0]->descriptor.range
|
|
||||||
};
|
|
||||||
|
|
||||||
VkDeviceAddressRangeKHR elRange1 = {
|
|
||||||
.address = element.buffers[1]->address,
|
|
||||||
.size = element.buffers[1]->descriptor.range
|
|
||||||
};
|
|
||||||
|
|
||||||
VkDeviceAddressRangeKHR elRange2 = {
|
|
||||||
.address = element.buffers[2]->address,
|
|
||||||
.size = element.buffers[2]->descriptor.range
|
|
||||||
};
|
|
||||||
|
|
||||||
VkResourceDescriptorInfoEXT resources[9] = {
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
|
|
||||||
.data = { .pImage = &imageInfo0 }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
|
|
||||||
.data = { .pImage = &imageInfo1 }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
|
|
||||||
.data = { .pImage = &imageInfo2 }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
|
||||||
.data = { .pAddressRange = &transformRange0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
|
||||||
.data = { .pAddressRange = &transformRange1}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
|
||||||
.data = { .pAddressRange = &transformRange2}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
|
||||||
.data = { .pAddressRange = &elRange0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
|
||||||
.data = { .pAddressRange = &elRange1}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.sType = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT,
|
|
||||||
.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
|
||||||
.data = { .pAddressRange = &elRange2}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
VkHostAddressRangeEXT destinations[9] = {
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[0].value,
|
|
||||||
.size = Device::descriptorHeapProperties.imageDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[1].value,
|
|
||||||
.size = Device::descriptorHeapProperties.imageDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[2].value,
|
|
||||||
.size = Device::descriptorHeapProperties.imageDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[0].value + descriptorHeap.bufferStartOffset,
|
|
||||||
.size = Device::descriptorHeapProperties.bufferDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[1].value + descriptorHeap.bufferStartOffset,
|
|
||||||
.size = Device::descriptorHeapProperties.bufferDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[2].value + descriptorHeap.bufferStartOffset,
|
|
||||||
.size = Device::descriptorHeapProperties.bufferDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[0].value + descriptorHeap.bufferStartOffset + Device::descriptorHeapProperties.bufferDescriptorSize * (renderingElement2DVulkans.size()),
|
|
||||||
.size = Device::descriptorHeapProperties.bufferDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[1].value + descriptorHeap.bufferStartOffset + Device::descriptorHeapProperties.bufferDescriptorSize * (renderingElement2DVulkans.size()),
|
|
||||||
.size = Device::descriptorHeapProperties.bufferDescriptorSize
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.address = descriptorHeap.resourceHeap[2].value + descriptorHeap.bufferStartOffset + Device::descriptorHeapProperties.bufferDescriptorSize * (renderingElement2DVulkans.size()),
|
|
||||||
.size = Device::descriptorHeapProperties.bufferDescriptorSize
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
Device::vkWriteResourceDescriptorsEXT(Device::device, 9, resources, destinations);
|
|
||||||
|
|
||||||
descriptorHeap.resourceHeap[0].FlushDevice();
|
|
||||||
descriptorHeap.resourceHeap[1].FlushDevice();
|
|
||||||
descriptorHeap.resourceHeap[2].FlushDevice();
|
|
||||||
|
|
||||||
window.pipeline = &pipeline;
|
window.pipeline = &pipeline;
|
||||||
window.descriptorHeap = &descriptorHeap;
|
window.descriptorHeap = &descriptorHeap;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue