|
- 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.
|