Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Side by Side Diff: src/gpu/GrDrawTarget.cpp

Issue 778783002: Use texture size to determine precision of texture coord varyings (Closed) Base URL: https://skia.googlesource.com/skia.git@defaultp
Patch Set: include skrandom.h in new gm cpp Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrCoordTransform.cpp ('k') | src/gpu/GrDrawTargetCaps.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 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 8
9 9
10 10
(...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 fCompressedTexSubImageSupport = false; 1004 fCompressedTexSubImageSupport = false;
1005 1005
1006 fUseDrawInsteadOfClear = false; 1006 fUseDrawInsteadOfClear = false;
1007 1007
1008 fMapBufferFlags = kNone_MapFlags; 1008 fMapBufferFlags = kNone_MapFlags;
1009 1009
1010 fMaxRenderTargetSize = 0; 1010 fMaxRenderTargetSize = 0;
1011 fMaxTextureSize = 0; 1011 fMaxTextureSize = 0;
1012 fMaxSampleCount = 0; 1012 fMaxSampleCount = 0;
1013 1013
1014 fShaderPrecisionVaries = false;
1015
1014 memset(fConfigRenderSupport, 0, sizeof(fConfigRenderSupport)); 1016 memset(fConfigRenderSupport, 0, sizeof(fConfigRenderSupport));
1015 memset(fConfigTextureSupport, 0, sizeof(fConfigTextureSupport)); 1017 memset(fConfigTextureSupport, 0, sizeof(fConfigTextureSupport));
1016 } 1018 }
1017 1019
1018 GrDrawTargetCaps& GrDrawTargetCaps::operator=(const GrDrawTargetCaps& other) { 1020 GrDrawTargetCaps& GrDrawTargetCaps::operator=(const GrDrawTargetCaps& other) {
1019 fMipMapSupport = other.fMipMapSupport; 1021 fMipMapSupport = other.fMipMapSupport;
1020 fNPOTTextureTileSupport = other.fNPOTTextureTileSupport; 1022 fNPOTTextureTileSupport = other.fNPOTTextureTileSupport;
1021 fTwoSidedStencilSupport = other.fTwoSidedStencilSupport; 1023 fTwoSidedStencilSupport = other.fTwoSidedStencilSupport;
1022 fStencilWrapOpsSupport = other.fStencilWrapOpsSupport; 1024 fStencilWrapOpsSupport = other.fStencilWrapOpsSupport;
1023 fHWAALineSupport = other.fHWAALineSupport; 1025 fHWAALineSupport = other.fHWAALineSupport;
(...skipping 11 matching lines...) Expand all
1035 1037
1036 fMapBufferFlags = other.fMapBufferFlags; 1038 fMapBufferFlags = other.fMapBufferFlags;
1037 1039
1038 fMaxRenderTargetSize = other.fMaxRenderTargetSize; 1040 fMaxRenderTargetSize = other.fMaxRenderTargetSize;
1039 fMaxTextureSize = other.fMaxTextureSize; 1041 fMaxTextureSize = other.fMaxTextureSize;
1040 fMaxSampleCount = other.fMaxSampleCount; 1042 fMaxSampleCount = other.fMaxSampleCount;
1041 1043
1042 memcpy(fConfigRenderSupport, other.fConfigRenderSupport, sizeof(fConfigRende rSupport)); 1044 memcpy(fConfigRenderSupport, other.fConfigRenderSupport, sizeof(fConfigRende rSupport));
1043 memcpy(fConfigTextureSupport, other.fConfigTextureSupport, sizeof(fConfigTex tureSupport)); 1045 memcpy(fConfigTextureSupport, other.fConfigTextureSupport, sizeof(fConfigTex tureSupport));
1044 1046
1047 fShaderPrecisionVaries = other.fShaderPrecisionVaries;
1048 for (int s = 0; s < kGrShaderTypeCount; ++s) {
1049 for (int p = 0; p < GrShaderVar::kPrecisionCount; ++p) {
1050 fFloatPrecisions[s][p] = other.fFloatPrecisions[s][p];
1051 }
1052 }
1045 return *this; 1053 return *this;
1046 } 1054 }
1047 1055
1048 static SkString map_flags_to_string(uint32_t flags) { 1056 static SkString map_flags_to_string(uint32_t flags) {
1049 SkString str; 1057 SkString str;
1050 if (GrDrawTargetCaps::kNone_MapFlags == flags) { 1058 if (GrDrawTargetCaps::kNone_MapFlags == flags) {
1051 str = "none"; 1059 str = "none";
1052 } else { 1060 } else {
1053 SkASSERT(GrDrawTargetCaps::kCanMap_MapFlag & flags); 1061 SkASSERT(GrDrawTargetCaps::kCanMap_MapFlag & flags);
1054 SkDEBUGCODE(flags &= ~GrDrawTargetCaps::kCanMap_MapFlag); 1062 SkDEBUGCODE(flags &= ~GrDrawTargetCaps::kCanMap_MapFlag);
1055 str = "can_map"; 1063 str = "can_map";
1056 1064
1057 if (GrDrawTargetCaps::kSubset_MapFlag & flags) { 1065 if (GrDrawTargetCaps::kSubset_MapFlag & flags) {
1058 str.append(" partial"); 1066 str.append(" partial");
1059 } else { 1067 } else {
1060 str.append(" full"); 1068 str.append(" full");
1061 } 1069 }
1062 SkDEBUGCODE(flags &= ~GrDrawTargetCaps::kSubset_MapFlag); 1070 SkDEBUGCODE(flags &= ~GrDrawTargetCaps::kSubset_MapFlag);
1063 } 1071 }
1064 SkASSERT(0 == flags); // Make sure we handled all the flags. 1072 SkASSERT(0 == flags); // Make sure we handled all the flags.
1065 return str; 1073 return str;
1066 } 1074 }
1067 1075
1076 static const char* shader_type_to_string(GrShaderType type) {
1077 switch (type) {
1078 case kVertex_GrShaderType:
1079 return "vertex";
1080 case kGeometry_GrShaderType:
1081 return "geometry";
1082 case kFragment_GrShaderType:
1083 return "fragment";
1084 }
1085 return "";
1086 }
1087
1088 static const char* precision_to_string(GrShaderVar::Precision p) {
1089 switch (p) {
1090 case GrShaderVar::kLow_Precision:
1091 return "low";
1092 case GrShaderVar::kMedium_Precision:
1093 return "medium";
1094 case GrShaderVar::kHigh_Precision:
1095 return "high";
1096 }
1097 return "";
1098 }
1099
1068 SkString GrDrawTargetCaps::dump() const { 1100 SkString GrDrawTargetCaps::dump() const {
1069 SkString r; 1101 SkString r;
1070 static const char* gNY[] = {"NO", "YES"}; 1102 static const char* gNY[] = {"NO", "YES"};
1071 r.appendf("MIP Map Support : %s\n", gNY[fMipMapSupport]); 1103 r.appendf("MIP Map Support : %s\n", gNY[fMipMapSupport]);
1072 r.appendf("NPOT Texture Tile Support : %s\n", gNY[fNPOTTextureTileS upport]); 1104 r.appendf("NPOT Texture Tile Support : %s\n", gNY[fNPOTTextureTileS upport]);
1073 r.appendf("Two Sided Stencil Support : %s\n", gNY[fTwoSidedStencilS upport]); 1105 r.appendf("Two Sided Stencil Support : %s\n", gNY[fTwoSidedStencilS upport]);
1074 r.appendf("Stencil Wrap Ops Support : %s\n", gNY[fStencilWrapOpsSu pport]); 1106 r.appendf("Stencil Wrap Ops Support : %s\n", gNY[fStencilWrapOpsSu pport]);
1075 r.appendf("HW AA Lines Support : %s\n", gNY[fHWAALineSupport] ); 1107 r.appendf("HW AA Lines Support : %s\n", gNY[fHWAALineSupport] );
1076 r.appendf("Shader Derivative Support : %s\n", gNY[fShaderDerivative Support]); 1108 r.appendf("Shader Derivative Support : %s\n", gNY[fShaderDerivative Support]);
1077 r.appendf("Geometry Shader Support : %s\n", gNY[fGeometryShaderSu pport]); 1109 r.appendf("Geometry Shader Support : %s\n", gNY[fGeometryShaderSu pport]);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 } 1165 }
1134 1166
1135 SkASSERT(!fConfigTextureSupport[kUnknown_GrPixelConfig]); 1167 SkASSERT(!fConfigTextureSupport[kUnknown_GrPixelConfig]);
1136 1168
1137 for (size_t i = 1; i < SK_ARRAY_COUNT(kConfigNames); ++i) { 1169 for (size_t i = 1; i < SK_ARRAY_COUNT(kConfigNames); ++i) {
1138 r.appendf("%s is uploadable to a texture: %s\n", 1170 r.appendf("%s is uploadable to a texture: %s\n",
1139 kConfigNames[i], 1171 kConfigNames[i],
1140 gNY[fConfigTextureSupport[i]]); 1172 gNY[fConfigTextureSupport[i]]);
1141 } 1173 }
1142 1174
1175 r.appendf("Shader Float Precisions (varies: %s):\n", gNY[fShaderPrecisionVar ies]);
1176
1177 for (int s = 0; s < kGrShaderTypeCount; ++s) {
1178 GrShaderType shaderType = static_cast<GrShaderType>(s);
1179 r.appendf("\t%s:\n", shader_type_to_string(shaderType));
1180 for (int p = 0; p < GrShaderVar::kPrecisionCount; ++p) {
1181 if (fFloatPrecisions[s][p].supported()) {
1182 GrShaderVar::Precision precision = static_cast<GrShaderVar::Prec ision>(p);
1183 r.appendf("\t\t%s: log_low: %d log_high: %d bits: %d\n",
1184 precision_to_string(precision),
1185 fFloatPrecisions[s][p].fLogRangeLow,
1186 fFloatPrecisions[s][p].fLogRangeHigh,
1187 fFloatPrecisions[s][p].fBits);
1188 }
1189 }
1190 }
1191
1143 return r; 1192 return r;
1144 } 1193 }
1145 1194
1146 uint32_t GrDrawTargetCaps::CreateUniqueID() { 1195 uint32_t GrDrawTargetCaps::CreateUniqueID() {
1147 static int32_t gUniqueID = SK_InvalidUniqueID; 1196 static int32_t gUniqueID = SK_InvalidUniqueID;
1148 uint32_t id; 1197 uint32_t id;
1149 do { 1198 do {
1150 id = static_cast<uint32_t>(sk_atomic_inc(&gUniqueID) + 1); 1199 id = static_cast<uint32_t>(sk_atomic_inc(&gUniqueID) + 1);
1151 } while (id == SK_InvalidUniqueID); 1200 } while (id == SK_InvalidUniqueID);
1152 return id; 1201 return id;
1153 } 1202 }
1154 1203
1155 //////////////////////////////////////////////////////////////////////////////// /////////////////// 1204 //////////////////////////////////////////////////////////////////////////////// ///////////////////
1156 1205
1157 bool GrClipTarget::setupClip(const SkRect* devBounds, 1206 bool GrClipTarget::setupClip(const SkRect* devBounds,
1158 GrDrawState::AutoRestoreEffects* are, 1207 GrDrawState::AutoRestoreEffects* are,
1159 GrDrawState::AutoRestoreStencil* ars, 1208 GrDrawState::AutoRestoreStencil* ars,
1160 GrDrawState* ds, 1209 GrDrawState* ds,
1161 GrClipMaskManager::ScissorState* scissorState) { 1210 GrClipMaskManager::ScissorState* scissorState) {
1162 return fClipMaskManager.setupClipping(ds, 1211 return fClipMaskManager.setupClipping(ds,
1163 are, 1212 are,
1164 ars, 1213 ars,
1165 scissorState, 1214 scissorState,
1166 this->getClip(), 1215 this->getClip(),
1167 devBounds); 1216 devBounds);
1168 } 1217 }
OLDNEW
« no previous file with comments | « src/gpu/GrCoordTransform.cpp ('k') | src/gpu/GrDrawTargetCaps.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698