BsRenderAPICapabilities.cpp 2.1 KB

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