Example #1
0
        public void DestroyDebugReportCallbackEXT(IMgInstance instance, IMgAllocationCallbacks allocator)
        {
            if (mIsDisposed)
            {
                return;
            }

            var bInstance = (VkInstance)instance;

            Debug.Assert(bInstance != null);

            var    bAllocator   = (MgVkAllocationCallbacks)allocator;
            IntPtr allocatorPtr = bAllocator != null ? bAllocator.Handle : IntPtr.Zero;

            Interops.vkDestroyDebugReportCallbackEXT(bInstance.Handle, this.Handle, allocatorPtr);

            this.Handle = 0UL;
            mIsDisposed = true;
        }
Example #2
0
 public void DestroySurfaceKHR(IMgInstance instance, IMgAllocationCallbacks allocator)
 {
 }
Example #3
0
 public Result CreateInstance(MgInstanceCreateInfo createInfo, IMgAllocationCallbacks allocator, out IMgInstance instance)
 {
     instance = new GLInstance(mQueue, mEntrypoint);
     return(Result.SUCCESS);
 }
Example #4
0
        public Result CreateInstance(MgInstanceCreateInfo createInfo, IMgAllocationCallbacks allocator, out IMgInstance instance)
        {
            var allocatedItems = new List <IntPtr>();

            try
            {
                uint enabledLayerCount;
                var  ppEnabledLayerNames = VkInteropsUtility.CopyStringArrays(allocatedItems, createInfo.EnabledLayerNames, out enabledLayerCount);

                uint enabledExtensionCount;
                var  ppEnabledExtensionNames = VkInteropsUtility.CopyStringArrays(allocatedItems, createInfo.EnabledExtensionNames, out enabledExtensionCount);

                var pApplicationInfo = IntPtr.Zero;
                if (createInfo.ApplicationInfo != null)
                {
                    var acInfo = new VkApplicationInfo
                    {
                        sType              = VkStructureType.StructureTypeApplicationInfo,
                        pNext              = IntPtr.Zero,
                        apiVersion         = createInfo.ApplicationInfo.ApiVersion,
                        applicationVersion = createInfo.ApplicationInfo.ApplicationVersion,
                        engineVersion      = createInfo.ApplicationInfo.EngineVersion,
                        pApplicationName   = CopySingleString(allocatedItems, createInfo.ApplicationInfo.ApplicationName),
                        pEngineName        = CopySingleString(allocatedItems, createInfo.ApplicationInfo.EngineName),
                    };

                    var destPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(VkApplicationInfo)));
                    allocatedItems.Add(destPtr);

                    Marshal.StructureToPtr(acInfo, destPtr, false);

                    pApplicationInfo = destPtr;
                }

                var ici = new VkInstanceCreateInfo
                {
                    sType                   = VkStructureType.StructureTypeInstanceCreateInfo,
                    pNext                   = IntPtr.Zero,
                    enabledLayerCount       = enabledLayerCount,
                    ppEnabledLayerNames     = ppEnabledLayerNames,
                    enabledExtensionCount   = enabledExtensionCount,
                    ppEnabledExtensionNames = ppEnabledExtensionNames,
                    pApplicationInfo        = pApplicationInfo,
                };

                var    bAllocator   = allocator as MgVkAllocationCallbacks;
                IntPtr allocatorPtr = bAllocator != null ? bAllocator.Handle : IntPtr.Zero;

                IntPtr handle = IntPtr.Zero;
                var    result = Interops.vkCreateInstance(ref ici, allocatorPtr, ref handle);

                instance = new VkInstance(handle);

                return((Result)result);
            }
            finally
            {
                //foreach (var mem in allocatedItems)
                //{
                //	Marshal.FreeHGlobal(mem);
                //}
            }
        }
Example #5
0
        public Result CreateInstance(MgInstanceCreateInfo createInfo, IMgAllocationCallbacks allocator, out IMgInstance instance)
        {
            var semaphore    = new AmtSemaphoreEntrypoint();
            var presentQueue = mLocalDevice.CreateCommandQueue(mQuery.NoOfCommandBufferSlots);

            var queueRenderer  = new AmtQueueRenderer(presentQueue);
            var queue          = new AmtQueue(queueRenderer, semaphore, presentQueue);
            var device         = new AmtDevice(mLocalDevice, mQuery, mGenerator, queue);
            var physicalDevice = new AmtPhysicalDevice(device);

            instance = new AmtInstance(physicalDevice);

            return(Result.SUCCESS);
        }