| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /*
- -----------------------------------------------------------------------------
- This source file is part of OGRE
- (Object-oriented Graphics Rendering Engine)
- For the latest info, see http://www.ogre3d.org/
- Copyright (c) 2000-2011 Torus Knot Software Ltd
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- -----------------------------------------------------------------------------
- */
- #include "CmRenderSystemCapabilities.h"
- #include "CmException.h"
- #include "CmString.h"
- namespace CamelotFramework {
- //-----------------------------------------------------------------------
- RenderSystemCapabilities::RenderSystemCapabilities()
- : mVendor(GPU_UNKNOWN)
- , mNumWorldMatrices(0)
- , mNumCombinedTextureUnits(0)
- , mNumCombinedUniformBlocks(0)
- , mStencilBufferBitDepth(0)
- , mNumVertexBlendMatrices(0)
- , mNumMultiRenderTargets(1)
- , mMaxBoundVertexBuffers(1)
- , mNonPOW2TexturesLimited(false)
- {
- for(int i = 0; i < CAPS_CATEGORY_COUNT; i++)
- {
- mCapabilities[i] = 0;
- }
- mCategoryRelevant[CAPS_CATEGORY_COMMON] = true;
- mCategoryRelevant[CAPS_CATEGORY_COMMON_2] = true;
- // each rendersystem should enable these
- mCategoryRelevant[CAPS_CATEGORY_D3D9] = false;
- mCategoryRelevant[CAPS_CATEGORY_GL] = false;
- mNumTextureUnitsPerStage[GPT_VERTEX_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_FRAGMENT_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_GEOMETRY_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_HULL_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_DOMAIN_PROGRAM] = 0;
- mNumTextureUnitsPerStage[GPT_COMPUTE_PROGRAM] = 0;
- mNumUniformBlocksPerStage[GPT_VERTEX_PROGRAM] = 0;
- mNumUniformBlocksPerStage[GPT_FRAGMENT_PROGRAM] = 0;
- mNumUniformBlocksPerStage[GPT_GEOMETRY_PROGRAM] = 0;
- mNumUniformBlocksPerStage[GPT_HULL_PROGRAM] = 0;
- mNumUniformBlocksPerStage[GPT_DOMAIN_PROGRAM] = 0;
- mNumUniformBlocksPerStage[GPT_COMPUTE_PROGRAM] = 0;
- }
- //-----------------------------------------------------------------------
- RenderSystemCapabilities::~RenderSystemCapabilities()
- {
- }
- //---------------------------------------------------------------------
- vector<CamelotFramework::String>::type RenderSystemCapabilities::msGPUVendorStrings;
- //---------------------------------------------------------------------
- GPUVendor RenderSystemCapabilities::vendorFromString(const String& vendorString)
- {
- initVendorStrings();
- GPUVendor ret = GPU_UNKNOWN;
- String cmpString = vendorString;
- StringUtil::toLowerCase(cmpString);
- for (int i = 0; i < GPU_VENDOR_COUNT; ++i)
- {
- // case insensitive (lower case)
- if (msGPUVendorStrings[i] == cmpString)
- {
- ret = static_cast<GPUVendor>(i);
- break;
- }
- }
- return ret;
-
- }
- //---------------------------------------------------------------------
- String RenderSystemCapabilities::vendorToString(GPUVendor v)
- {
- initVendorStrings();
- return msGPUVendorStrings[v];
- }
- //---------------------------------------------------------------------
- void RenderSystemCapabilities::initVendorStrings()
- {
- if (msGPUVendorStrings.empty())
- {
- // Always lower case!
- msGPUVendorStrings.resize(GPU_VENDOR_COUNT);
- msGPUVendorStrings[GPU_UNKNOWN] = "unknown";
- msGPUVendorStrings[GPU_NVIDIA] = "nvidia";
- msGPUVendorStrings[GPU_ATI] = "ati";
- msGPUVendorStrings[GPU_INTEL] = "intel";
- msGPUVendorStrings[GPU_3DLABS] = "3dlabs";
- msGPUVendorStrings[GPU_S3] = "s3";
- msGPUVendorStrings[GPU_MATROX] = "matrox";
- msGPUVendorStrings[GPU_SIS] = "sis";
- msGPUVendorStrings[GPU_IMAGINATION_TECHNOLOGIES] = "imagination technologies";
- msGPUVendorStrings[GPU_APPLE] = "apple"; // iPhone Simulator
- }
- }
- }
|