unit uvkuPipelineCacheFactory; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Vulkan, uvkuFactoryBase, uvkuPipelineCache; type TvkuPipelineCacheFactory = class(TvkuDeviceObjFactory) private fFlags: VkPipelineCacheCreateFlags; fInitialDataSize: VkSize; fInitialData: PVkVoid; public property Flags: VkPipelineCacheCreateFlags read fFlags write fFlags; procedure SetInitalData(const aData: PVkVoid; const aSize: VkSize); function GetStructure: TVkPipelineCacheCreateInfo; procedure SetStructure(const aData: TVkPipelineCacheCreateInfo); function CreatePipelineCache: TvkuPipelineCache; end; implementation ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TvkuPipelineCacheFactory/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TvkuPipelineCacheFactory.SetInitalData(const aData: PVkVoid; const aSize: VkSize); begin fInitialData := aData; fInitialDataSize := aSize; end; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TvkuPipelineCacheFactory.GetStructure: TVkPipelineCacheCreateInfo; begin FillByte(result, SizeOf(result), 0); result.sType := VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO; result.pNext := nil; result.flags := fFlags; result.initialDataSize := fInitialDataSize; result.pInitialData := fInitialData; end; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TvkuPipelineCacheFactory.SetStructure(const aData: TVkPipelineCacheCreateInfo); begin fFlags := aData.flags; fInitialDataSize := aData.initialDataSize; fInitialData := aData.pInitialData; end; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TvkuPipelineCacheFactory.CreatePipelineCache: TvkuPipelineCache; begin result := TvkuPipelineCache.Create(GetStructure, DeviceCommands, AllocCallbacks); end; end.