BsRenderAPICapabilities.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "RenderAPI/BsRenderAPICapabilities.h"
  4. #include "Error/BsException.h"
  5. namespace bs
  6. {
  7. Vector<bs::String> RenderAPICapabilities::msGPUVendorStrings;
  8. RenderAPICapabilities::RenderAPICapabilities()
  9. {
  10. for(UINT32 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. mNumLoadStoreTextureUnitsPerStage[GPT_VERTEX_PROGRAM] = 0;
  27. mNumLoadStoreTextureUnitsPerStage[GPT_FRAGMENT_PROGRAM] = 0;
  28. mNumLoadStoreTextureUnitsPerStage[GPT_GEOMETRY_PROGRAM] = 0;
  29. mNumLoadStoreTextureUnitsPerStage[GPT_HULL_PROGRAM] = 0;
  30. mNumLoadStoreTextureUnitsPerStage[GPT_DOMAIN_PROGRAM] = 0;
  31. mNumLoadStoreTextureUnitsPerStage[GPT_COMPUTE_PROGRAM] = 0;
  32. }
  33. RenderAPICapabilities::~RenderAPICapabilities()
  34. {
  35. }
  36. GPUVendor RenderAPICapabilities::vendorFromString(const String& vendorString)
  37. {
  38. initVendorStrings();
  39. GPUVendor ret = GPU_UNKNOWN;
  40. String cmpString = vendorString;
  41. StringUtil::toLowerCase(cmpString);
  42. for (int i = 0; i < GPU_VENDOR_COUNT; ++i)
  43. {
  44. // case insensitive (lower case)
  45. if (msGPUVendorStrings[i] == cmpString)
  46. {
  47. ret = static_cast<GPUVendor>(i);
  48. break;
  49. }
  50. }
  51. return ret;
  52. }
  53. String RenderAPICapabilities::vendorToString(GPUVendor v)
  54. {
  55. initVendorStrings();
  56. return msGPUVendorStrings[v];
  57. }
  58. void RenderAPICapabilities::initVendorStrings()
  59. {
  60. if (msGPUVendorStrings.empty())
  61. {
  62. // Always lower case
  63. msGPUVendorStrings.resize(GPU_VENDOR_COUNT);
  64. msGPUVendorStrings[GPU_UNKNOWN] = "unknown";
  65. msGPUVendorStrings[GPU_NVIDIA] = "nvidia";
  66. msGPUVendorStrings[GPU_AMD] = "amd";
  67. msGPUVendorStrings[GPU_INTEL] = "intel";
  68. }
  69. }
  70. }