Exemple #1
0
        public FenceGetWin32HandleInfoKHR
        (
            StructureType?sType = StructureType.FenceGetWin32HandleInfoKhr,
            void *pNext         = null,
            Fence?fence         = null,
            ExternalFenceHandleTypeFlags?handleType = null
        ) : this()
        {
            if (sType is not null)
            {
                SType = sType.Value;
            }

            if (pNext is not null)
            {
                PNext = pNext;
            }

            if (fence is not null)
            {
                Fence = fence.Value;
            }

            if (handleType is not null)
            {
                HandleType = handleType.Value;
            }
        }
Exemple #2
0
        public ImportFenceWin32HandleInfoKHR
        (
            StructureType?sType    = StructureType.ImportFenceWin32HandleInfoKhr,
            void *pNext            = null,
            Fence?fence            = null,
            FenceImportFlags?flags = null,
            ExternalFenceHandleTypeFlags?handleType = null,
            IntPtr?handle = null,
            IntPtr?name   = null
        ) : this()
        {
            if (sType is not null)
            {
                SType = sType.Value;
            }

            if (pNext is not null)
            {
                PNext = pNext;
            }

            if (fence is not null)
            {
                Fence = fence.Value;
            }

            if (flags is not null)
            {
                Flags = flags.Value;
            }

            if (handleType is not null)
            {
                HandleType = handleType.Value;
            }

            if (handle is not null)
            {
                Handle = handle.Value;
            }

            if (name is not null)
            {
                Name = name.Value;
            }
        }
        public AcquireNextImageInfoKHR
        (
            StructureType?sType    = StructureType.AcquireNextImageInfoKhr,
            void *pNext            = null,
            SwapchainKHR?swapchain = null,
            ulong?timeout          = null,
            Semaphore?semaphore    = null,
            Fence?fence            = null,
            uint?deviceMask        = null
        ) : this()
        {
            if (sType is not null)
            {
                SType = sType.Value;
            }

            if (pNext is not null)
            {
                PNext = pNext;
            }

            if (swapchain is not null)
            {
                Swapchain = swapchain.Value;
            }

            if (timeout is not null)
            {
                Timeout = timeout.Value;
            }

            if (semaphore is not null)
            {
                Semaphore = semaphore.Value;
            }

            if (fence is not null)
            {
                Fence = fence.Value;
            }

            if (deviceMask is not null)
            {
                DeviceMask = deviceMask.Value;
            }
        }
        public ImportFenceFdInfoKHR
        (
            StructureType?sType    = StructureType.ImportFenceFDInfoKhr,
            void *pNext            = null,
            Fence?fence            = null,
            FenceImportFlags?flags = null,
            ExternalFenceHandleTypeFlags?handleType = null,
            int?fd = null
        ) : this()
        {
            if (sType is not null)
            {
                SType = sType.Value;
            }

            if (pNext is not null)
            {
                PNext = pNext;
            }

            if (fence is not null)
            {
                Fence = fence.Value;
            }

            if (flags is not null)
            {
                Flags = flags.Value;
            }

            if (handleType is not null)
            {
                HandleType = handleType.Value;
            }

            if (fd is not null)
            {
                Fd = fd.Value;
            }
        }
Exemple #5
0
            public unsafe void Submit(
                ReadOnlySpan <Semaphore> waitSemaphores,
                ReadOnlySpan <PipelineStageFlags> waitDstStageMask,
                ReadOnlySpan <Semaphore> signalSemaphores,
                Fence?fence = null)
            {
                EndRecording();

                if (!fence.HasValue)
                {
                    fence = _fence;
                }

                fixed(Semaphore *pWaitSemaphores = waitSemaphores, pSignalSemaphores = signalSemaphores)
                {
                    fixed(PipelineStageFlags *pWaitDstStageMask = waitDstStageMask)
                    {
                        var commandBuffer = InternalHandle;
                        var submitInfo    = new SubmitInfo
                        {
                            SType = StructureType.SubmitInfo,
                            WaitSemaphoreCount   = waitSemaphores != null ? (uint)waitSemaphores.Length : 0,
                            PWaitSemaphores      = pWaitSemaphores,
                            PWaitDstStageMask    = pWaitDstStageMask,
                            CommandBufferCount   = 1,
                            PCommandBuffers      = &commandBuffer,
                            SignalSemaphoreCount = signalSemaphores != null ? (uint)signalSemaphores.Length : 0,
                            PSignalSemaphores    = pSignalSemaphores,
                        };

                        _device.Api.ResetFences(_device.InternalHandle, 1, fence.Value);

                        _device.Submit(submitInfo, fence.Value);
                    }
                }

                _commandBufferPool.DisposeCommandBuffer(this);
            }