Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions src/PasVulkan.pas
Original file line number Diff line number Diff line change
Expand Up @@ -6505,6 +6505,7 @@ constructor TVulkanInstance.Create(const pApplicationName:TVulkanCharString='Vul
const pAllocationManager:TVulkanAllocationManager=nil);
var Index,SubIndex:TVkInt32;
Count,SubCount:TVkUInt32;
LayerName:PVkChar;
LayerProperties:TVkLayerPropertiesArray;
LayerProperty:PVulkanAvailableLayer;
ExtensionProperties:TVkExtensionPropertiesArray;
Expand Down Expand Up @@ -6592,14 +6593,18 @@ constructor TVulkanInstance.Create(const pApplicationName:TVulkanCharString='Vul
try
fAvailableExtensions:=nil;
Count:=0;
for Index:=0 to length(fAvailableLayers)-1 do begin
HandleResultCode(fVulkan.EnumerateInstanceExtensionProperties(PVkChar(fAvailableLayers[Index].layerName),@SubCount,nil));
for Index:=-1 to length(fAvailableLayers)-1 do begin
if Index = -1 then
LayerName:=nil
else
LayerName:=PVkChar(fAvailableLayers[Index].layerName);
HandleResultCode(fVulkan.EnumerateInstanceExtensionProperties(LayerName,@SubCount,nil));
if SubCount>0 then begin
if SubCount>TVkUInt32(length(ExtensionProperties)) then begin
SetLength(ExtensionProperties,SubCount);
end;
SetLength(fAvailableExtensions,Count+SubCount);
HandleResultCode(fVulkan.EnumerateInstanceExtensionProperties(PVkChar(fAvailableLayers[Index].layerName),@SubCount,@ExtensionProperties[0]));
HandleResultCode(fVulkan.EnumerateInstanceExtensionProperties(LayerName,@SubCount,@ExtensionProperties[0]));
for SubIndex:=0 to SubCount-1 do begin
ExtensionProperty:=@fAvailableExtensions[Count+TVkUInt32(SubIndex)];
ExtensionProperty^.LayerIndex:=Index;
Expand Down Expand Up @@ -6839,6 +6844,7 @@ procedure TVulkanInstance.InstallDebugReportCallback;
constructor TVulkanPhysicalDevice.Create(const pInstance:TVulkanInstance;const pPhysicalDevice:TVkPhysicalDevice);
var Index,SubIndex:TVkInt32;
Count,SubCount:TVkUInt32;
LayerName:PVkChar;
LayerProperties:TVkLayerPropertiesArray;
LayerProperty:PVulkanAvailableLayer;
ExtensionProperties:TVkExtensionPropertiesArray;
Expand Down Expand Up @@ -6899,14 +6905,18 @@ constructor TVulkanPhysicalDevice.Create(const pInstance:TVulkanInstance;const p
try
fAvailableExtensions:=nil;
Count:=0;
for Index:=0 to length(fAvailableLayers)-1 do begin
HandleResultCode(fInstance.fVulkan.EnumerateDeviceExtensionProperties(fPhysicalDeviceHandle,PVkChar(fAvailableLayers[Index].layerName),@SubCount,nil));
for Index:=-1 to length(fAvailableLayers)-1 do begin
if Index = -1 then
LayerName:=nil
else
LayerName:=PVkChar(fAvailableLayers[Index].layerName);
HandleResultCode(fInstance.fVulkan.EnumerateDeviceExtensionProperties(fPhysicalDeviceHandle,LayerName,@SubCount,nil));
if SubCount>0 then begin
if SubCount>TVkUInt32(length(ExtensionProperties)) then begin
SetLength(ExtensionProperties,SubCount);
end;
SetLength(fAvailableExtensions,Count+SubCount);
HandleResultCode(fInstance.fVulkan.EnumerateDeviceExtensionProperties(fPhysicalDeviceHandle,PVkChar(fAvailableLayers[Index].layerName),@SubCount,@ExtensionProperties[0]));
HandleResultCode(fInstance.fVulkan.EnumerateDeviceExtensionProperties(fPhysicalDeviceHandle,LayerName,@SubCount,@ExtensionProperties[0]));
for SubIndex:=0 to SubCount-1 do begin
ExtensionProperty:=@fAvailableExtensions[Count+TVkUInt32(SubIndex)];
ExtensionProperty^.LayerIndex:=Index;
Expand Down Expand Up @@ -18248,4 +18258,3 @@ procedure TVulkanTexture.UpdateSampler;

end.