Example #1
0
void createDeviceAndQueue(GR_DEVICE& device, GR_QUEUE& universalQueue) {
	// Find Mantle compatible GPU handles
	GR_APPLICATION_INFO appInfo = {};
	appInfo.apiVersion = GR_API_VERSION;

	GR_PHYSICAL_GPU gpus[GR_MAX_PHYSICAL_GPUS] = {};
	GR_UINT gpuCount = 0;

	grInitAndEnumerateGpus(&appInfo, nullptr, &gpuCount, gpus);

	// Create device from first compatible GPU
	GR_DEVICE_QUEUE_CREATE_INFO queueInfo = {};
	queueInfo.queueType = GR_QUEUE_UNIVERSAL;
	queueInfo.queueCount = 1;

	assert(grGetExtensionSupport(gpus[0], "GR_WSI_WINDOWS") == GR_SUCCESS);

	static const GR_CHAR* const ppExtensions[] = {
		"GR_WSI_WINDOWS",
	};

	GR_DEVICE_CREATE_INFO deviceInfo = {};
	deviceInfo.queueRecordCount = 1;
	deviceInfo.pRequestedQueues = &queueInfo;
	deviceInfo.extensionCount = 1;
	deviceInfo.ppEnabledExtensionNames = ppExtensions;
	deviceInfo.flags |= GR_DEVICE_CREATE_VALIDATION;
	deviceInfo.maxValidationLevel = GR_VALIDATION_LEVEL_4;

	grCreateDevice(gpus[0], &deviceInfo, &device);

	grGetDeviceQueue(device, GR_QUEUE_UNIVERSAL, 0, &universalQueue);
}
Example #2
0
int main() {
	SetConsoleTitle(L"Mantle Example");

	GR_APPLICATION_INFO appInfo	= {};
	appInfo.pAppName			= "Example";
	appInfo.apiVersion			= GR_API_VERSION;

	GR_UINT32 gpuCount;
	GR_PYSICAL_GPU gpus[GR_MAX_PHYSICAL_GPUS];

	GR_RESULT result = grInitAndEnumerateGpus(&appInfo, &gpuCount, &gpuCount, &gpus[0]);

	if(result == GR_SUCCESS) {
		printf("GPU Count: %d\n", gpuCount);
	} else {
		printf("Error: %d", result);
	}

	getchar();

	return 0;
}