| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "RenderAPI/BsRenderAPICapabilities.h"
- #include "Error/BsException.h"
- namespace bs
- {
- Vector<bs::String> RenderAPICapabilities::msGPUVendorStrings;
- RenderAPICapabilities::RenderAPICapabilities()
- {
- for(UINT32 i = 0; i < CAPS_CATEGORY_COUNT; i++)
- {
- mCapabilities[i] = 0;
- }
- mNumTextureUnitsPerStage[GPT_VERTEX_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_FRAGMENT_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_GEOMETRY_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_HULL_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_DOMAIN_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_COMPUTE_PROGRAM] = 0;
- mNumGpuParamBlocksPerStage[GPT_VERTEX_PROGRAM] = 0;
- mNumGpuParamBlocksPerStage[GPT_FRAGMENT_PROGRAM] = 0;
- mNumGpuParamBlocksPerStage[GPT_GEOMETRY_PROGRAM] = 0;
- mNumGpuParamBlocksPerStage[GPT_HULL_PROGRAM] = 0;
- mNumGpuParamBlocksPerStage[GPT_DOMAIN_PROGRAM] = 0;
- mNumGpuParamBlocksPerStage[GPT_COMPUTE_PROGRAM] = 0;
- mNumLoadStoreTextureUnitsPerStage[GPT_VERTEX_PROGRAM] = 0;
- mNumLoadStoreTextureUnitsPerStage[GPT_FRAGMENT_PROGRAM] = 0;
- mNumLoadStoreTextureUnitsPerStage[GPT_GEOMETRY_PROGRAM] = 0;
- mNumLoadStoreTextureUnitsPerStage[GPT_HULL_PROGRAM] = 0;
- mNumLoadStoreTextureUnitsPerStage[GPT_DOMAIN_PROGRAM] = 0;
- mNumLoadStoreTextureUnitsPerStage[GPT_COMPUTE_PROGRAM] = 0;
- }
- RenderAPICapabilities::~RenderAPICapabilities()
- {
- }
- GPUVendor RenderAPICapabilities::vendorFromString(const String& vendorString)
- {
- initVendorStrings();
- GPUVendor ret = GPU_UNKNOWN;
- String cmpString = vendorString;
- StringUtil::toLowerCase(cmpString);
- for (int i = 0; i < GPU_VENDOR_COUNT; ++i)
- {
- // case insensitive (lower case)
- if (msGPUVendorStrings[i] == cmpString)
- {
- ret = static_cast<GPUVendor>(i);
- break;
- }
- }
- return ret;
- }
- String RenderAPICapabilities::vendorToString(GPUVendor v)
- {
- initVendorStrings();
- return msGPUVendorStrings[v];
- }
- void RenderAPICapabilities::initVendorStrings()
- {
- if (msGPUVendorStrings.empty())
- {
- // Always lower case
- msGPUVendorStrings.resize(GPU_VENDOR_COUNT);
- msGPUVendorStrings[GPU_UNKNOWN] = "unknown";
- msGPUVendorStrings[GPU_NVIDIA] = "nvidia";
- msGPUVendorStrings[GPU_AMD] = "amd";
- msGPUVendorStrings[GPU_INTEL] = "intel";
- }
- }
- }
|