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

Side by Side Diff: src/gpu/gl/GrGLProgram.cpp

Issue 22850006: Replace uses of GrAssert by SkASSERT. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: rebase Created 7 years, 4 months 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 | Annotate | Revision Log
« no previous file with comments | « src/gpu/gl/GrGLPath.cpp ('k') | src/gpu/gl/GrGLProgramDesc.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 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrGLProgram.h" 8 #include "GrGLProgram.h"
9 9
10 #include "GrAllocator.h" 10 #include "GrAllocator.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 break; 100 break;
101 // The prog will write a coverage value to the secondary 101 // The prog will write a coverage value to the secondary
102 // output and the dst is blended by one minus that value. 102 // output and the dst is blended by one minus that value.
103 case GrGLProgramDesc::kSecondaryCoverage_CoverageOutput: 103 case GrGLProgramDesc::kSecondaryCoverage_CoverageOutput:
104 case GrGLProgramDesc::kSecondaryCoverageISA_CoverageOutput: 104 case GrGLProgramDesc::kSecondaryCoverageISA_CoverageOutput:
105 case GrGLProgramDesc::kSecondaryCoverageISC_CoverageOutput: 105 case GrGLProgramDesc::kSecondaryCoverageISC_CoverageOutput:
106 *dstCoeff = (GrBlendCoeff)GrGpu::kIS2C_GrBlendCoeff; 106 *dstCoeff = (GrBlendCoeff)GrGpu::kIS2C_GrBlendCoeff;
107 break; 107 break;
108 case GrGLProgramDesc::kCombineWithDst_CoverageOutput: 108 case GrGLProgramDesc::kCombineWithDst_CoverageOutput:
109 // We should only have set this if the blend was specified as (1, 0) 109 // We should only have set this if the blend was specified as (1, 0)
110 GrAssert(kOne_GrBlendCoeff == *srcCoeff && kZero_GrBlendCoeff == *ds tCoeff); 110 SkASSERT(kOne_GrBlendCoeff == *srcCoeff && kZero_GrBlendCoeff == *ds tCoeff);
111 break; 111 break;
112 default: 112 default:
113 GrCrash("Unexpected coverage output"); 113 GrCrash("Unexpected coverage output");
114 break; 114 break;
115 } 115 }
116 } 116 }
117 117
118 namespace { 118 namespace {
119 // given two blend coefficients determine whether the src 119 // given two blend coefficients determine whether the src
120 // and/or dst computation can be omitted. 120 // and/or dst computation can be omitted.
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 default: 275 default:
276 GrCrash("Unknown color type."); 276 GrCrash("Unknown color type.");
277 return kNone_GrSLConstantVec; 277 return kNone_GrSLConstantVec;
278 } 278 }
279 } 279 }
280 280
281 void GrGLProgram::genGeometryShader(GrGLShaderBuilder* builder) const { 281 void GrGLProgram::genGeometryShader(GrGLShaderBuilder* builder) const {
282 #if GR_GL_EXPERIMENTAL_GS 282 #if GR_GL_EXPERIMENTAL_GS
283 // TODO: The builder should add all this glue code. 283 // TODO: The builder should add all this glue code.
284 if (fDesc.getHeader().fExperimentalGS) { 284 if (fDesc.getHeader().fExperimentalGS) {
285 GrAssert(fContext.info().glslGeneration() >= k150_GrGLSLGeneration); 285 SkASSERT(fContext.info().glslGeneration() >= k150_GrGLSLGeneration);
286 builder->fGSHeader.append("layout(triangles) in;\n" 286 builder->fGSHeader.append("layout(triangles) in;\n"
287 "layout(triangle_strip, max_vertices = 6) out ;\n"); 287 "layout(triangle_strip, max_vertices = 6) out ;\n");
288 builder->gsCodeAppend("\tfor (int i = 0; i < 3; ++i) {\n" 288 builder->gsCodeAppend("\tfor (int i = 0; i < 3; ++i) {\n"
289 "\t\tgl_Position = gl_in[i].gl_Position;\n"); 289 "\t\tgl_Position = gl_in[i].gl_Position;\n");
290 if (fDesc.getHeader().fEmitsPointSize) { 290 if (fDesc.getHeader().fEmitsPointSize) {
291 builder->gsCodeAppend("\t\tgl_PointSize = 1.0;\n"); 291 builder->gsCodeAppend("\t\tgl_PointSize = 1.0;\n");
292 } 292 }
293 GrAssert(builder->fGSInputs.count() == builder->fGSOutputs.count()); 293 SkASSERT(builder->fGSInputs.count() == builder->fGSOutputs.count());
294 int count = builder->fGSInputs.count(); 294 int count = builder->fGSInputs.count();
295 for (int i = 0; i < count; ++i) { 295 for (int i = 0; i < count; ++i) {
296 builder->gsCodeAppendf("\t\t%s = %s[i];\n", 296 builder->gsCodeAppendf("\t\t%s = %s[i];\n",
297 builder->fGSOutputs[i].getName().c_str(), 297 builder->fGSOutputs[i].getName().c_str(),
298 builder->fGSInputs[i].getName().c_str()); 298 builder->fGSInputs[i].getName().c_str());
299 } 299 }
300 builder->gsCodeAppend("\t\tEmitVertex();\n" 300 builder->gsCodeAppend("\t\tEmitVertex();\n"
301 "\t}\n" 301 "\t}\n"
302 "\tEndPrimitive();\n"); 302 "\tEndPrimitive();\n");
303 } 303 }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 SkAutoMalloc log(sizeof(char)*(infoLen+1)); // outside if for debugger 357 SkAutoMalloc log(sizeof(char)*(infoLen+1)); // outside if for debugger
358 if (infoLen > 0) { 358 if (infoLen > 0) {
359 // retrieve length even though we don't need it to workaround bug in chrome cmd buffer 359 // retrieve length even though we don't need it to workaround bug in chrome cmd buffer
360 // param validation. 360 // param validation.
361 GrGLsizei length = GR_GL_INIT_ZERO; 361 GrGLsizei length = GR_GL_INIT_ZERO;
362 GR_GL_CALL(gli, GetShaderInfoLog(shader, infoLen+1, 362 GR_GL_CALL(gli, GetShaderInfoLog(shader, infoLen+1,
363 &length, (char*)log.get())); 363 &length, (char*)log.get()));
364 print_shader(stringCnt, strings, stringLengths); 364 print_shader(stringCnt, strings, stringLengths);
365 GrPrintf("\n%s", log.get()); 365 GrPrintf("\n%s", log.get());
366 } 366 }
367 GrAssert(!"Shader compilation failed!"); 367 SkASSERT(!"Shader compilation failed!");
368 GR_GL_CALL(gli, DeleteShader(shader)); 368 GR_GL_CALL(gli, DeleteShader(shader));
369 return 0; 369 return 0;
370 } 370 }
371 return shader; 371 return shader;
372 } 372 }
373 373
374 // helper version of above for when shader is already flattened into a single Sk String 374 // helper version of above for when shader is already flattened into a single Sk String
375 GrGLuint compile_shader(const GrGLContext& gl, GrGLenum type, const SkString& sh ader) { 375 GrGLuint compile_shader(const GrGLContext& gl, GrGLenum type, const SkString& sh ader) {
376 const GrGLchar* str = shader.c_str(); 376 const GrGLchar* str = shader.c_str();
377 int length = shader.size(); 377 int length = shader.size();
378 return compile_shader(gl, type, 1, &str, &length); 378 return compile_shader(gl, type, 1, &str, &length);
379 } 379 }
380 380
381 void expand_known_value4f(SkString* string, GrSLConstantVec vec) { 381 void expand_known_value4f(SkString* string, GrSLConstantVec vec) {
382 GrAssert(string->isEmpty() == (vec != kNone_GrSLConstantVec)); 382 SkASSERT(string->isEmpty() == (vec != kNone_GrSLConstantVec));
383 switch (vec) { 383 switch (vec) {
384 case kNone_GrSLConstantVec: 384 case kNone_GrSLConstantVec:
385 break; 385 break;
386 case kZeros_GrSLConstantVec: 386 case kZeros_GrSLConstantVec:
387 *string = GrGLSLZerosVecf(4); 387 *string = GrGLSLZerosVecf(4);
388 break; 388 break;
389 case kOnes_GrSLConstantVec: 389 case kOnes_GrSLConstantVec:
390 *string = GrGLSLOnesVecf(4); 390 *string = GrGLSLOnesVecf(4);
391 break; 391 break;
392 } 392 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 } 430 }
431 if (!(fFShaderID = compile_shader(fContext, GR_GL_FRAGMENT_SHADER, shader))) { 431 if (!(fFShaderID = compile_shader(fContext, GR_GL_FRAGMENT_SHADER, shader))) {
432 return false; 432 return false;
433 } 433 }
434 434
435 return true; 435 return true;
436 } 436 }
437 437
438 bool GrGLProgram::genProgram(const GrEffectStage* colorStages[], 438 bool GrGLProgram::genProgram(const GrEffectStage* colorStages[],
439 const GrEffectStage* coverageStages[]) { 439 const GrEffectStage* coverageStages[]) {
440 GrAssert(0 == fProgramID); 440 SkASSERT(0 == fProgramID);
441 441
442 const GrGLProgramDesc::KeyHeader& header = fDesc.getHeader(); 442 const GrGLProgramDesc::KeyHeader& header = fDesc.getHeader();
443 443
444 GrGLShaderBuilder builder(fContext.info(), fUniformManager, fDesc); 444 GrGLShaderBuilder builder(fContext.info(), fUniformManager, fDesc);
445 445
446 // the dual source output has no canonical var name, have to 446 // the dual source output has no canonical var name, have to
447 // declare an output, which is incompatible with gl_FragColor/gl_FragData. 447 // declare an output, which is incompatible with gl_FragColor/gl_FragData.
448 bool dualSourceOutputWritten = false; 448 bool dualSourceOutputWritten = false;
449 449
450 GrGLShaderVar colorOutput; 450 GrGLShaderVar colorOutput;
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 if (infoLen > 0) { 735 if (infoLen > 0) {
736 // retrieve length even though we don't need it to workaround 736 // retrieve length even though we don't need it to workaround
737 // bug in chrome cmd buffer param validation. 737 // bug in chrome cmd buffer param validation.
738 GrGLsizei length = GR_GL_INIT_ZERO; 738 GrGLsizei length = GR_GL_INIT_ZERO;
739 GL_CALL(GetProgramInfoLog(fProgramID, 739 GL_CALL(GetProgramInfoLog(fProgramID,
740 infoLen+1, 740 infoLen+1,
741 &length, 741 &length,
742 (char*)log.get())); 742 (char*)log.get()));
743 GrPrintf((char*)log.get()); 743 GrPrintf((char*)log.get());
744 } 744 }
745 GrAssert(!"Error linking program"); 745 SkASSERT(!"Error linking program");
746 GL_CALL(DeleteProgram(fProgramID)); 746 GL_CALL(DeleteProgram(fProgramID));
747 fProgramID = 0; 747 fProgramID = 0;
748 return false; 748 return false;
749 } 749 }
750 return true; 750 return true;
751 } 751 }
752 752
753 void GrGLProgram::initSamplerUniforms() { 753 void GrGLProgram::initSamplerUniforms() {
754 GL_CALL(UseProgram(fProgramID)); 754 GL_CALL(UseProgram(fProgramID));
755 GrGLint texUnitIdx = 0; 755 GrGLint texUnitIdx = 0;
(...skipping 29 matching lines...) Expand all
785 const GrEffectStage& stage, 785 const GrEffectStage& stage,
786 const EffectAndSamplers& effect) { 786 const EffectAndSamplers& effect) {
787 787
788 // Let the GrGLEffect set its data. 788 // Let the GrGLEffect set its data.
789 bool explicitLocalCoords = -1 != fDesc.getHeader().fLocalCoordAttributeIndex ; 789 bool explicitLocalCoords = -1 != fDesc.getHeader().fLocalCoordAttributeIndex ;
790 GrDrawEffect drawEffect(stage, explicitLocalCoords); 790 GrDrawEffect drawEffect(stage, explicitLocalCoords);
791 effect.fGLEffect->setData(fUniformManager, drawEffect); 791 effect.fGLEffect->setData(fUniformManager, drawEffect);
792 792
793 // Bind the texures for the effect. 793 // Bind the texures for the effect.
794 int numSamplers = effect.fSamplerUnis.count(); 794 int numSamplers = effect.fSamplerUnis.count();
795 GrAssert((*stage.getEffect())->numTextures() == numSamplers); 795 SkASSERT((*stage.getEffect())->numTextures() == numSamplers);
796 for (int s = 0; s < numSamplers; ++s) { 796 for (int s = 0; s < numSamplers; ++s) {
797 UniformHandle handle = effect.fSamplerUnis[s]; 797 UniformHandle handle = effect.fSamplerUnis[s];
798 if (handle.isValid()) { 798 if (handle.isValid()) {
799 const GrTextureAccess& access = (*stage.getEffect())->textureAccess( s); 799 const GrTextureAccess& access = (*stage.getEffect())->textureAccess( s);
800 GrGLTexture* texture = static_cast<GrGLTexture*>(access.getTexture() ); 800 GrGLTexture* texture = static_cast<GrGLTexture*>(access.getTexture() );
801 int unit = effect.fTextureUnits[s]; 801 int unit = effect.fTextureUnits[s];
802 gpu->bindTexture(unit, access.getParams(), texture); 802 gpu->bindTexture(unit, access.getParams(), texture);
803 } 803 }
804 } 804 }
805 } 805 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 fUniformManager.set2f(fUniformHandles.fDstCopyTopLeftUni, 843 fUniformManager.set2f(fUniformHandles.fDstCopyTopLeftUni,
844 static_cast<GrGLfloat>(dstCopy->offset().fX), 844 static_cast<GrGLfloat>(dstCopy->offset().fX),
845 static_cast<GrGLfloat>(dstCopy->offset().fY)); 845 static_cast<GrGLfloat>(dstCopy->offset().fY));
846 fUniformManager.set2f(fUniformHandles.fDstCopyScaleUni, 846 fUniformManager.set2f(fUniformHandles.fDstCopyScaleUni,
847 1.f / dstCopy->texture()->width(), 847 1.f / dstCopy->texture()->width(),
848 1.f / dstCopy->texture()->height()); 848 1.f / dstCopy->texture()->height());
849 GrGLTexture* texture = static_cast<GrGLTexture*>(dstCopy->texture()) ; 849 GrGLTexture* texture = static_cast<GrGLTexture*>(dstCopy->texture()) ;
850 static GrTextureParams kParams; // the default is clamp, nearest fil tering. 850 static GrTextureParams kParams; // the default is clamp, nearest fil tering.
851 gpu->bindTexture(fDstCopyTexUnit, kParams, texture); 851 gpu->bindTexture(fDstCopyTexUnit, kParams, texture);
852 } else { 852 } else {
853 GrAssert(!fUniformHandles.fDstCopyScaleUni.isValid()); 853 SkASSERT(!fUniformHandles.fDstCopyScaleUni.isValid());
854 GrAssert(!fUniformHandles.fDstCopySamplerUni.isValid()); 854 SkASSERT(!fUniformHandles.fDstCopySamplerUni.isValid());
855 } 855 }
856 } else { 856 } else {
857 GrAssert(!fUniformHandles.fDstCopyTopLeftUni.isValid()); 857 SkASSERT(!fUniformHandles.fDstCopyTopLeftUni.isValid());
858 GrAssert(!fUniformHandles.fDstCopyScaleUni.isValid()); 858 SkASSERT(!fUniformHandles.fDstCopyScaleUni.isValid());
859 GrAssert(!fUniformHandles.fDstCopySamplerUni.isValid()); 859 SkASSERT(!fUniformHandles.fDstCopySamplerUni.isValid());
860 } 860 }
861 861
862 for (int e = 0; e < fColorEffects.count(); ++e) { 862 for (int e = 0; e < fColorEffects.count(); ++e) {
863 // We may have omitted the GrGLEffect because of the color filter logic in genProgram. 863 // We may have omitted the GrGLEffect because of the color filter logic in genProgram.
864 // This can be removed when the color filter is an effect. 864 // This can be removed when the color filter is an effect.
865 if (NULL != fColorEffects[e].fGLEffect) { 865 if (NULL != fColorEffects[e].fGLEffect) {
866 this->setEffectData(gpu, *colorStages[e], fColorEffects[e]); 866 this->setEffectData(gpu, *colorStages[e], fColorEffects[e]);
867 } 867 }
868 } 868 }
869 869
870 for (int e = 0; e < fCoverageEffects.count(); ++e) { 870 for (int e = 0; e < fCoverageEffects.count(); ++e) {
871 if (NULL != fCoverageEffects[e].fGLEffect) { 871 if (NULL != fCoverageEffects[e].fGLEffect) {
872 this->setEffectData(gpu, *coverageStages[e], fCoverageEffects[e]); 872 this->setEffectData(gpu, *coverageStages[e], fCoverageEffects[e]);
873 } 873 }
874 } 874 }
875 } 875 }
876 876
877 void GrGLProgram::setColor(const GrDrawState& drawState, 877 void GrGLProgram::setColor(const GrDrawState& drawState,
878 GrColor color, 878 GrColor color,
879 SharedGLState* sharedState) { 879 SharedGLState* sharedState) {
880 const GrGLProgramDesc::KeyHeader& header = fDesc.getHeader(); 880 const GrGLProgramDesc::KeyHeader& header = fDesc.getHeader();
881 if (!drawState.hasColorVertexAttribute()) { 881 if (!drawState.hasColorVertexAttribute()) {
882 switch (header.fColorInput) { 882 switch (header.fColorInput) {
883 case GrGLProgramDesc::kAttribute_ColorInput: 883 case GrGLProgramDesc::kAttribute_ColorInput:
884 GrAssert(-1 != header.fColorAttributeIndex); 884 SkASSERT(-1 != header.fColorAttributeIndex);
885 if (sharedState->fConstAttribColor != color || 885 if (sharedState->fConstAttribColor != color ||
886 sharedState->fConstAttribColorIndex != header.fColorAttribut eIndex) { 886 sharedState->fConstAttribColorIndex != header.fColorAttribut eIndex) {
887 // OpenGL ES only supports the float varieties of glVertexAt trib 887 // OpenGL ES only supports the float varieties of glVertexAt trib
888 GrGLfloat c[4]; 888 GrGLfloat c[4];
889 GrColorToRGBAFloat(color, c); 889 GrColorToRGBAFloat(color, c);
890 GL_CALL(VertexAttrib4fv(header.fColorAttributeIndex, c)); 890 GL_CALL(VertexAttrib4fv(header.fColorAttributeIndex, c));
891 sharedState->fConstAttribColor = color; 891 sharedState->fConstAttribColor = color;
892 sharedState->fConstAttribColorIndex = header.fColorAttribute Index; 892 sharedState->fConstAttribColorIndex = header.fColorAttribute Index;
893 } 893 }
894 break; 894 break;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 SkScalarToFloat(m[SkMatrix::kMTransX]), 992 SkScalarToFloat(m[SkMatrix::kMTransX]),
993 SkScalarToFloat(m[SkMatrix::kMTransY]), 993 SkScalarToFloat(m[SkMatrix::kMTransY]),
994 SkScalarToFloat(m[SkMatrix::kMPersp2]) 994 SkScalarToFloat(m[SkMatrix::kMPersp2])
995 }; 995 };
996 fUniformManager.setMatrix3f(fUniformHandles.fViewMatrixUni, mt); 996 fUniformManager.setMatrix3f(fUniformHandles.fViewMatrixUni, mt);
997 fMatrixState.fViewMatrix = drawState.getViewMatrix(); 997 fMatrixState.fViewMatrix = drawState.getViewMatrix();
998 fMatrixState.fRenderTargetSize = size; 998 fMatrixState.fRenderTargetSize = size;
999 fMatrixState.fRenderTargetOrigin = rt->origin(); 999 fMatrixState.fRenderTargetOrigin = rt->origin();
1000 } 1000 }
1001 } 1001 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLPath.cpp ('k') | src/gpu/gl/GrGLProgramDesc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698