| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #ifndef GrDrawTargetCaps_DEFINED | 8 #ifndef GrDrawTargetCaps_DEFINED |
| 9 #define GrDrawTargetCaps_DEFINED | 9 #define GrDrawTargetCaps_DEFINED |
| 10 | 10 |
| 11 #include "GrTypes.h" | 11 #include "GrTypes.h" |
| 12 #include "GrTypesPriv.h" | 12 #include "GrTypesPriv.h" |
| 13 #include "GrShaderVar.h" | 13 #include "GrShaderVar.h" |
| 14 #include "SkRefCnt.h" | 14 #include "SkRefCnt.h" |
| 15 #include "SkString.h" | 15 #include "SkString.h" |
| 16 | 16 |
| 17 /** | 17 /** |
| 18 * Represents the draw target capabilities. | 18 * Represents the draw target capabilities. |
| 19 */ | 19 */ |
| 20 class GrDrawTargetCaps : public SkRefCnt { | 20 class GrDrawTargetCaps : public SkRefCnt { |
| 21 public: | 21 public: |
| 22 SK_DECLARE_INST_COUNT(GrDrawTargetCaps) | 22 SK_DECLARE_INST_COUNT(GrDrawTargetCaps) |
| 23 | 23 |
| 24 /** Info about shader variable precision within a given shader stage. That i
s, this info | 24 /** Info about shader variable precision within a given shader stage. That i
s, this info |
| 25 is relevant to a float (or vecNf) variable declared with a GrShaderVar::
Precision | 25 is relevant to a float (or vecNf) variable declared with a GrSLPrecision |
| 26 in a given GrShaderType. The info here is hoisted from the OpenGL spec.
*/ | 26 in a given GrShaderType. The info here is hoisted from the OpenGL spec.
*/ |
| 27 struct PrecisionInfo { | 27 struct PrecisionInfo { |
| 28 PrecisionInfo() { | 28 PrecisionInfo() { |
| 29 fLogRangeLow = 0; | 29 fLogRangeLow = 0; |
| 30 fLogRangeHigh = 0; | 30 fLogRangeHigh = 0; |
| 31 fBits = 0; | 31 fBits = 0; |
| 32 } | 32 } |
| 33 | 33 |
| 34 /** Is this precision level allowed in the shader stage? */ | 34 /** Is this precision level allowed in the shader stage? */ |
| 35 bool supported() const { return 0 != fBits; } | 35 bool supported() const { return 0 != fBits; } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 return fConfigTextureSupport[config]; | 120 return fConfigTextureSupport[config]; |
| 121 } | 121 } |
| 122 | 122 |
| 123 /** | 123 /** |
| 124 * Get the precision info for a variable of type kFloat_GrSLType, kVec2f_GrS
LType, etc in a | 124 * Get the precision info for a variable of type kFloat_GrSLType, kVec2f_GrS
LType, etc in a |
| 125 * given shader type. If the shader type is not supported or the precision l
evel is not | 125 * given shader type. If the shader type is not supported or the precision l
evel is not |
| 126 * supported in that shader type then the returned struct will report false
when supported() is | 126 * supported in that shader type then the returned struct will report false
when supported() is |
| 127 * called. | 127 * called. |
| 128 */ | 128 */ |
| 129 const PrecisionInfo& getFloatShaderPrecisionInfo(GrShaderType shaderType, | 129 const PrecisionInfo& getFloatShaderPrecisionInfo(GrShaderType shaderType, |
| 130 GrShaderVar::Precision prec
ision) const { | 130 GrSLPrecision precision) co
nst { |
| 131 return fFloatPrecisions[shaderType][precision]; | 131 return fFloatPrecisions[shaderType][precision]; |
| 132 }; | 132 }; |
| 133 | 133 |
| 134 /** | 134 /** |
| 135 * Is there any difference between the float shader variable precision types
? If this is true | 135 * Is there any difference between the float shader variable precision types
? If this is true |
| 136 * then unless the shader type is not supported, any call to getFloatShaderP
recisionInfo() would | 136 * then unless the shader type is not supported, any call to getFloatShaderP
recisionInfo() would |
| 137 * report the same info for all precisions in all shader types. | 137 * report the same info for all precisions in all shader types. |
| 138 */ | 138 */ |
| 139 bool floatPrecisionVaries() const { return fShaderPrecisionVaries; } | 139 bool floatPrecisionVaries() const { return fShaderPrecisionVaries; } |
| 140 | 140 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 168 | 168 |
| 169 int fMaxRenderTargetSize; | 169 int fMaxRenderTargetSize; |
| 170 int fMaxTextureSize; | 170 int fMaxTextureSize; |
| 171 int fMaxSampleCount; | 171 int fMaxSampleCount; |
| 172 | 172 |
| 173 // The first entry for each config is without msaa and the second is with. | 173 // The first entry for each config is without msaa and the second is with. |
| 174 bool fConfigRenderSupport[kGrPixelConfigCnt][2]; | 174 bool fConfigRenderSupport[kGrPixelConfigCnt][2]; |
| 175 bool fConfigTextureSupport[kGrPixelConfigCnt]; | 175 bool fConfigTextureSupport[kGrPixelConfigCnt]; |
| 176 | 176 |
| 177 bool fShaderPrecisionVaries; | 177 bool fShaderPrecisionVaries; |
| 178 PrecisionInfo fFloatPrecisions[kGrShaderTypeCount][GrShaderVar::kPrecisionCo
unt]; | 178 PrecisionInfo fFloatPrecisions[kGrShaderTypeCount][kGrSLPrecisionCount]; |
| 179 | 179 |
| 180 private: | 180 private: |
| 181 static uint32_t CreateUniqueID(); | 181 static uint32_t CreateUniqueID(); |
| 182 | 182 |
| 183 const uint32_t fUniqueID; | 183 const uint32_t fUniqueID; |
| 184 | 184 |
| 185 typedef SkRefCnt INHERITED; | 185 typedef SkRefCnt INHERITED; |
| 186 }; | 186 }; |
| 187 | 187 |
| 188 #endif | 188 #endif |
| OLD | NEW |