BsRenderSystemCapabilities.cpp 1.9 KB

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