예제 #1
0
 public AmtDevice(IMTLDevice systemDefault, IAmtDeviceQuery mQuery, IAmtMetalLibraryLoader generator, AmtQueue queue)
 {
     this.mDevice    = systemDefault;
     this.mQuery     = mQuery;
     this.mGenerator = generator;
     mQueue          = queue;
 }
예제 #2
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);
        }