You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Research ticket for better binding model. As feedback of work on opengothic, it seem descriptor-set based is way to expensive and error-prone: need something convenient+lighter.
Generally 'it just works': bindless-array can be represented as argument-buffer.
DX12
Root-descriptor + Heap-offset:
Root-parameters in DX consists of 64*DWORD (256 bytes of data):
root-descriptor is 2 words long, gives 32 descriptors max (and 16, if reserve 128 bytes for push-constant)
samplers (non-static) has to be in heap, however combination of possible samplers is limited, can push offset for each
array can be allocated in heap, requires 1 DWORD to represent offset
Vulkan
VK_KHR_push_descriptor seem to be closes analog to root-descriptors, and now core in vulkan. VkPhysicalDevicePushDescriptorProperties::maxPushDescriptors == 32
Bindless data can be moved to other descriptor set (however it will break tooling)
The text was updated successfully, but these errors were encountered:
Research ticket for better binding model. As feedback of work on opengothic, it seem descriptor-set based is way to expensive and error-prone: need something convenient+lighter.
Current idea: push-descriptor + bindless-arrays.
Possible C++ interface
const DescriptorArray<Texture2D>& texture = ... cmd.setBinding(L_Diffuse, texture); cmd.setBinding(L_SceneClr, sceneColor); cmd.setPipeline(pso);
or
Metal
Generally 'it just works': bindless-array can be represented as argument-buffer.
DX12
Root-descriptor + Heap-offset:
Root-parameters in DX consists of 64*DWORD (256 bytes of data):
root-descriptor is 2 words long, gives 32 descriptors max (and 16, if reserve 128 bytes for push-constant)
samplers (non-static) has to be in heap, however combination of possible samplers is limited, can push offset for each
array can be allocated in heap, requires 1 DWORD to represent offset
Vulkan
VK_KHR_push_descriptor
seem to be closes analog to root-descriptors, and now core in vulkan.VkPhysicalDevicePushDescriptorProperties::maxPushDescriptors == 32
Bindless data can be moved to other descriptor set (however it will break tooling)
The text was updated successfully, but these errors were encountered: