2
0

BsRenderAPICapabilities.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "BsRenderAPICapabilities.h"
  2. #include "BsException.h"
  3. namespace BansheeEngine
  4. {
  5. Vector<BansheeEngine::String> RenderAPICapabilities::msGPUVendorStrings;
  6. RenderAPICapabilities::RenderAPICapabilities()
  7. {
  8. for(int i = 0; i < CAPS_CATEGORY_COUNT; i++)
  9. {
  10. mCapabilities[i] = 0;
  11. }
  12. mNumTextureUnitsPerStage[GPT_VERTEX_PROGRAM] = 0;
  13. mNumTextureUnitsPerStage[GPT_FRAGMENT_PROGRAM] = 0;
  14. mNumTextureUnitsPerStage[GPT_GEOMETRY_PROGRAM] = 0;
  15. mNumTextureUnitsPerStage[GPT_HULL_PROGRAM] = 0;
  16. mNumTextureUnitsPerStage[GPT_DOMAIN_PROGRAM] = 0;
  17. mNumTextureUnitsPerStage[GPT_COMPUTE_PROGRAM] = 0;
  18. mNumGpuParamBlocksPerStage[GPT_VERTEX_PROGRAM] = 0;
  19. mNumGpuParamBlocksPerStage[GPT_FRAGMENT_PROGRAM] = 0;
  20. mNumGpuParamBlocksPerStage[GPT_GEOMETRY_PROGRAM] = 0;
  21. mNumGpuParamBlocksPerStage[GPT_HULL_PROGRAM] = 0;
  22. mNumGpuParamBlocksPerStage[GPT_DOMAIN_PROGRAM] = 0;
  23. mNumGpuParamBlocksPerStage[GPT_COMPUTE_PROGRAM] = 0;
  24. }
  25. RenderAPICapabilities::~RenderAPICapabilities()
  26. {
  27. }
  28. GPUVendor RenderAPICapabilities::vendorFromString(const String& vendorString)
  29. {
  30. initVendorStrings();
  31. GPUVendor ret = GPU_UNKNOWN;
  32. String cmpString = vendorString;
  33. StringUtil::toLowerCase(cmpString);
  34. for (int i = 0; i < GPU_VENDOR_COUNT; ++i)
  35. {
  36. // case insensitive (lower case)
  37. if (msGPUVendorStrings[i] == cmpString)
  38. {
  39. ret = static_cast<GPUVendor>(i);
  40. break;
  41. }
  42. }
  43. return ret;
  44. }
  45. String RenderAPICapabilities::vendorToString(GPUVendor v)
  46. {
  47. initVendorStrings();
  48. return msGPUVendorStrings[v];
  49. }
  50. void RenderAPICapabilities::initVendorStrings()
  51. {
  52. if (msGPUVendorStrings.empty())
  53. {
  54. // Always lower case
  55. msGPUVendorStrings.resize(GPU_VENDOR_COUNT);
  56. msGPUVendorStrings[GPU_UNKNOWN] = "unknown";
  57. msGPUVendorStrings[GPU_NVIDIA] = "nvidia";
  58. msGPUVendorStrings[GPU_AMD] = "amd";
  59. msGPUVendorStrings[GPU_INTEL] = "intel";
  60. }
  61. }
  62. }