BsRenderSystemCapabilities.cpp 2.2 KB

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