예제 #1
0
        /// <summary>
        /// Processes commands pushed to the FIFO.
        /// </summary>
        public void DispatchCalls()
        {
            while (_ibEnable && _commandBufferQueue.TryDequeue(out CommandBuffer entry))
            {
                _currentCommandBuffer = entry;
                _currentCommandBuffer.Fetch(_context);

                _processor.Process(_currentCommandBuffer.Words);
            }
        }
예제 #2
0
        /// <summary>
        /// Processes commands pushed to the FIFO.
        /// </summary>
        public void DispatchCalls()
        {
            while (_ibEnable && !_interrupt && _commandBufferQueue.TryDequeue(out CommandBuffer entry))
            {
                bool flushCommandBuffer = true;

                if (_flushSkips != 0)
                {
                    _flushSkips--;
                    flushCommandBuffer = false;
                }

                _currentCommandBuffer = entry;
                _currentCommandBuffer.Fetch(_context, flushCommandBuffer);

                _processor.Process(entry.EntryAddress, _currentCommandBuffer.Words);
            }

            _interrupt = false;
        }