luxlabs header browser preview


@class NSMutableDictionary, MTLPipelineBufferDescriptor, PKMetalResourceHandlerBuffer, NSObject, PKLRUCache;
@protocol MTLTexture, MTLComputePipelineState, MTLBuffer, OS_dispatch_queue, MTLPipelineLibrarySPI, MTLRenderPipelineState, MTLLibrary, MTLDevice;

@interface PKMetalResourceHandler : NSObject {
    id<MTLComputePipelineState> _particleShaderKernelPipelineState;
    id<MTLComputePipelineState> _particleShaderKernelPipelineStateWithVariableSpacing;
    id<MTLComputePipelineState> _paintShaderKernelPipelineState;
    id<MTLComputePipelineState> _paintShaderKernelPipelineStateWithLiveStrokeMode;
    id<MTLComputePipelineState> _paintShaderKernelPipelineStateWithLiveStrokeParticles;
    id<MTLRenderPipelineState> _sixChannelCopyToCanvasPipelineState;
    id<MTLBuffer> _cachedQuadVertexBuffer;
    id<MTLBuffer> _cachedQuadTexCoordBuffer;
    NSMutableDictionary *_inkTextures;
    struct unordered_map<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKMetalShaderKey>, std::allocator<std::pair<const (anonymous namespace)::PKMetalShaderKey, PKMetalShader *>>> { struct __hash_table<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, std::__unordered_map_hasher<(anonymous namespace)::PKMetalShaderKey, std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKMetalShaderKey>>, std::__unordered_map_equal<(anonymous namespace)::PKMetalShaderKey, std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, std::equal_to<(anonymous namespace)::PKMetalShaderKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>, std::allocator<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>>> { struct unique_ptr<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> *[], std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> *>>> { struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> **, std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> *>>> { void **__value_; struct __bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> *>> { struct __compressed_pair<unsigned long, std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> *>> { unsigned long long __value_; } __data_; } __value_; } __ptr_; } __bucket_list_; struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *>, std::allocator<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *>>> { struct __hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, void *> *> { void *__next_; } __value_; } __p1_; struct __compressed_pair<unsigned long, std::__unordered_map_hasher<(anonymous namespace)::PKMetalShaderKey, std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKMetalShaderKey>>> { unsigned long long __value_; } __p2_; struct __compressed_pair<float, std::__unordered_map_equal<(anonymous namespace)::PKMetalShaderKey, std::__hash_value_type<(anonymous namespace)::PKMetalShaderKey, PKMetalShader *>, std::equal_to<(anonymous namespace)::PKMetalShaderKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>> { float __value_; } __p3_; } __table_; } _uberShaders;
    struct unordered_map<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKSixChannelShaderKey>, std::allocator<std::pair<const (anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>>> { struct __hash_table<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, std::__unordered_map_hasher<(anonymous namespace)::PKSixChannelShaderKey, std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKSixChannelShaderKey>>, std::__unordered_map_equal<(anonymous namespace)::PKSixChannelShaderKey, std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, std::equal_to<(anonymous namespace)::PKSixChannelShaderKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>, std::allocator<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>>> { struct unique_ptr<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> *[], std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> *>>> { struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> **, std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> *>>> { void **__value_; struct __bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> *>> { struct __compressed_pair<unsigned long, std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> *>> { unsigned long long __value_; } __data_; } __value_; } __ptr_; } __bucket_list_; struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *>, std::allocator<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *>>> { struct __hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, void *> *> { void *__next_; } __value_; } __p1_; struct __compressed_pair<unsigned long, std::__unordered_map_hasher<(anonymous namespace)::PKSixChannelShaderKey, std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKSixChannelShaderKey>>> { unsigned long long __value_; } __p2_; struct __compressed_pair<float, std::__unordered_map_equal<(anonymous namespace)::PKSixChannelShaderKey, std::__hash_value_type<(anonymous namespace)::PKSixChannelShaderKey, PKMetalShader *>, std::equal_to<(anonymous namespace)::PKSixChannelShaderKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>> { float __value_; } __p3_; } __table_; } _sixChannelShaders;
    struct unordered_map<PKNamedShaderKey, PKMetalShader *, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<PKNamedShaderKey>, std::allocator<std::pair<const PKNamedShaderKey, PKMetalShader *>>> { struct __hash_table<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, std::__unordered_map_hasher<PKNamedShaderKey, std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<PKNamedShaderKey>>, std::__unordered_map_equal<PKNamedShaderKey, std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, std::equal_to<PKNamedShaderKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>, std::allocator<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>>> { struct unique_ptr<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> *[], std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> *>>> { struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> **, std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> *>>> { void **__value_; struct __bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> *>> { struct __compressed_pair<unsigned long, std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> *>> { unsigned long long __value_; } __data_; } __value_; } __ptr_; } __bucket_list_; struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *>, std::allocator<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *>>> { struct __hash_node_base<std::__hash_node<std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, void *> *> { void *__next_; } __value_; } __p1_; struct __compressed_pair<unsigned long, std::__unordered_map_hasher<PKNamedShaderKey, std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<PKNamedShaderKey>>> { unsigned long long __value_; } __p2_; struct __compressed_pair<float, std::__unordered_map_equal<PKNamedShaderKey, std::__hash_value_type<PKNamedShaderKey, PKMetalShader *>, std::equal_to<PKNamedShaderKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>> { float __value_; } __p3_; } __table_; } _namedShaders;
    struct unordered_map<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<PKShaderPipelineConfig>, std::allocator<std::pair<const PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>>> { struct __hash_table<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, std::__unordered_map_hasher<PKShaderPipelineConfig, std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<PKShaderPipelineConfig>>, std::__unordered_map_equal<PKShaderPipelineConfig, std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, std::equal_to<PKShaderPipelineConfig>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>, std::allocator<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>>> { struct unique_ptr<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> *[], std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> *>>> { struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> **, std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> *>>> { void **__value_; struct __bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> *>> { struct __compressed_pair<unsigned long, std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> *>> { unsigned long long __value_; } __data_; } __value_; } __ptr_; } __bucket_list_; struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *>, std::allocator<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *>>> { struct __hash_node_base<std::__hash_node<std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, void *> *> { void *__next_; } __value_; } __p1_; struct __compressed_pair<unsigned long, std::__unordered_map_hasher<PKShaderPipelineConfig, std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<PKShaderPipelineConfig>>> { unsigned long long __value_; } __p2_; struct __compressed_pair<float, std::__unordered_map_equal<PKShaderPipelineConfig, std::__hash_value_type<PKShaderPipelineConfig, MTLRenderPipelineDescriptor *>, std::equal_to<PKShaderPipelineConfig>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>> { float __value_; } __p3_; } __table_; } _pipelineDescriptors;
    struct unordered_map<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKMetalKernelKey>, std::allocator<std::pair<const (anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>>> { struct __hash_table<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, std::__unordered_map_hasher<(anonymous namespace)::PKMetalKernelKey, std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKMetalKernelKey>>, std::__unordered_map_equal<(anonymous namespace)::PKMetalKernelKey, std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, std::equal_to<(anonymous namespace)::PKMetalKernelKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>, std::allocator<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>>> { struct unique_ptr<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> *[], std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> *>>> { struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> **, std::__bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> *>>> { void **__value_; struct __bucket_list_deallocator<std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> *>> { struct __compressed_pair<unsigned long, std::allocator<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> *>> { unsigned long long __value_; } __data_; } __value_; } __ptr_; } __bucket_list_; struct __compressed_pair<std::__hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *>, std::allocator<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *>>> { struct __hash_node_base<std::__hash_node<std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, void *> *> { void *__next_; } __value_; } __p1_; struct __compressed_pair<unsigned long, std::__unordered_map_hasher<(anonymous namespace)::PKMetalKernelKey, std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions, std::equal_to<(anonymous namespace)::PKMetalKernelKey>>> { unsigned long long __value_; } __p2_; struct __compressed_pair<float, std::__unordered_map_equal<(anonymous namespace)::PKMetalKernelKey, std::__hash_value_type<(anonymous namespace)::PKMetalKernelKey, id<MTLComputePipelineState>>, std::equal_to<(anonymous namespace)::PKMetalKernelKey>, (anonymous namespace)::PKMetalResourceHandlerHashFunctions>> { float __value_; } __p3_; } __table_; } _kernelPipelines;
    id<MTLLibrary> _defaultLibrary;
    id<MTLTexture> _paperTexture;
    struct CGSize { double width; double height; } _paperTextureSize;
    PKLRUCache *_strokeRenderCache;
    id<MTLBuffer> _uint16IndexBuffer;
    id<MTLBuffer> _uint32IndexBuffer;
    unsigned long long _uint32IndexBufferNumVertices;
    id<MTLBuffer> _randomNumberBuffer;
    NSObject<OS_dispatch_queue> *_accessQueue;
    unsigned long long _signpost_id;
    PKMetalResourceHandlerBuffer *_purgeableResourceBuffer;
    PKMetalResourceHandlerBuffer *_resourceBuffer;
    PKMetalResourceHandlerBuffer *_gpuResourceBuffer;
    id<MTLPipelineLibrarySPI> _pipelineLibrary;
    BOOL _generatePipelineDescriptors;
    BOOL _generateForScribble;
    BOOL _deviceSupportsAppleFamily;
    BOOL _deviceSupportsMacFamily;
    BOOL _deviceSupportsFramebufferFetch;
    BOOL _sixChannelUsesWideGamut;
    id<MTLDevice> _device;
    unsigned long long _sixChannelOriginalBackPixelFormat;
    unsigned long long _sixChannelMetalLayerPixelFormat;
    MTLPipelineBufferDescriptor *_sharedPipelineDescriptor;
}

+ (id)generatePipelineDescriptorsForDevice:(id)a0;

- (id)init;
- (id).cxx_construct;
- (void).cxx_destruct;

@end