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

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

Issue 2143143002: Add Texture2D and Sampler GrSLTypes (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: nits Created 4 years, 5 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
« no previous file with comments | « include/gpu/GrTypesPriv.h ('k') | src/gpu/gl/GrGLProgramDesc.cpp » ('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 "GrGLGpu.h" 8 #include "GrGLGpu.h"
9 #include "GrGLBuffer.h" 9 #include "GrGLBuffer.h"
10 #include "GrGLGLSL.h" 10 #include "GrGLGLSL.h"
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 return false; 329 return false;
330 } 330 }
331 331
332 const GrGLSLCaps* glslCaps = this->glCaps().glslCaps(); 332 const GrGLSLCaps* glslCaps = this->glCaps().glslCaps();
333 const char* version = glslCaps->versionDeclString(); 333 const char* version = glslCaps->versionDeclString();
334 334
335 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttribute _TypeModifier); 335 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttribute _TypeModifier);
336 GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType, 336 GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
337 GrShaderVar::kUniform_TypeModifier); 337 GrShaderVar::kUniform_TypeModifier);
338 GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType, GrShaderVar::kUnifo rm_TypeModifier); 338 GrGLSLShaderVar uPosXform("u_posXform", kVec4f_GrSLType, GrShaderVar::kUnifo rm_TypeModifier);
339 GrGLSLShaderVar uTexture("u_texture", kSampler2D_GrSLType, GrShaderVar::kUni form_TypeModifier); 339 GrGLSLShaderVar uTexture("u_texture", kTexture2DSampler_GrSLType,
340 GrShaderVar::kUniform_TypeModifier);
340 GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, GrShaderVar::kVaryi ngOut_TypeModifier); 341 GrGLSLShaderVar vTexCoord("v_texCoord", kVec2f_GrSLType, GrShaderVar::kVaryi ngOut_TypeModifier);
341 342
342 SkString vshaderTxt(version); 343 SkString vshaderTxt(version);
343 if (glslCaps->noperspectiveInterpolationSupport()) { 344 if (glslCaps->noperspectiveInterpolationSupport()) {
344 if (const char* extension = glslCaps->noperspectiveInterpolationExtensio nString()) { 345 if (const char* extension = glslCaps->noperspectiveInterpolationExtensio nString()) {
345 vshaderTxt.appendf("#extension %s : require\n", extension); 346 vshaderTxt.appendf("#extension %s : require\n", extension);
346 } 347 }
347 vTexCoord.addModifier("noperspective"); 348 vTexCoord.addModifier("noperspective");
348 } 349 }
349 aVertex.appendDecl(glslCaps, &vshaderTxt); 350 aVertex.appendDecl(glslCaps, &vshaderTxt);
(...skipping 3272 matching lines...) Expand 10 before | Expand all | Expand 10 after
3622 if (this->copySurfaceAsDraw(dst, src, srcRect, dstPoint)) { 3623 if (this->copySurfaceAsDraw(dst, src, srcRect, dstPoint)) {
3623 return true; 3624 return true;
3624 } 3625 }
3625 } 3626 }
3626 3627
3627 return false; 3628 return false;
3628 } 3629 }
3629 3630
3630 bool GrGLGpu::createCopyProgram(int progIdx) { 3631 bool GrGLGpu::createCopyProgram(int progIdx) {
3631 const GrGLSLCaps* glslCaps = this->glCaps().glslCaps(); 3632 const GrGLSLCaps* glslCaps = this->glCaps().glslCaps();
3632 static const GrSLType kSamplerTypes[3] = { kSampler2D_GrSLType, kSamplerExte rnal_GrSLType, 3633 static const GrSLType kSamplerTypes[3] = { kTexture2DSampler_GrSLType,
3633 kSampler2DRect_GrSLType }; 3634 kTextureExternalSampler_GrSLType,
3634 if (kSamplerExternal_GrSLType == kSamplerTypes[progIdx] && 3635 kTexture2DRectSampler_GrSLType };
3636 if (kTextureExternalSampler_GrSLType == kSamplerTypes[progIdx] &&
3635 !this->glCaps().glslCaps()->externalTextureSupport()) { 3637 !this->glCaps().glslCaps()->externalTextureSupport()) {
3636 return false; 3638 return false;
3637 } 3639 }
3638 if (kSampler2DRect_GrSLType == kSamplerTypes[progIdx] && 3640 if (kTexture2DRectSampler_GrSLType == kSamplerTypes[progIdx] &&
3639 !this->glCaps().rectangleTextureSupport()) { 3641 !this->glCaps().rectangleTextureSupport()) {
3640 return false; 3642 return false;
3641 } 3643 }
3642 3644
3643 if (!fCopyProgramArrayBuffer) { 3645 if (!fCopyProgramArrayBuffer) {
3644 static const GrGLfloat vdata[] = { 3646 static const GrGLfloat vdata[] = {
3645 0, 0, 3647 0, 0,
3646 0, 1, 3648 0, 1,
3647 1, 0, 3649 1, 0,
3648 1, 1 3650 1, 1
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
3698 " gl_Position.zw = vec2(0, 1);" 3700 " gl_Position.zw = vec2(0, 1);"
3699 "}" 3701 "}"
3700 ); 3702 );
3701 3703
3702 SkString fshaderTxt(version); 3704 SkString fshaderTxt(version);
3703 if (glslCaps->noperspectiveInterpolationSupport()) { 3705 if (glslCaps->noperspectiveInterpolationSupport()) {
3704 if (const char* extension = glslCaps->noperspectiveInterpolationExtensio nString()) { 3706 if (const char* extension = glslCaps->noperspectiveInterpolationExtensio nString()) {
3705 fshaderTxt.appendf("#extension %s : require\n", extension); 3707 fshaderTxt.appendf("#extension %s : require\n", extension);
3706 } 3708 }
3707 } 3709 }
3708 if (kSamplerTypes[progIdx] == kSamplerExternal_GrSLType) { 3710 if (kSamplerTypes[progIdx] == kTextureExternalSampler_GrSLType) {
3709 fshaderTxt.appendf("#extension %s : require\n", 3711 fshaderTxt.appendf("#extension %s : require\n",
3710 glslCaps->externalTextureExtensionString()); 3712 glslCaps->externalTextureExtensionString());
3711 } 3713 }
3712 GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, *glslCa ps, 3714 GrGLSLAppendDefaultFloatPrecisionDeclaration(kDefault_GrSLPrecision, *glslCa ps,
3713 &fshaderTxt); 3715 &fshaderTxt);
3714 vTexCoord.setTypeModifier(GrShaderVar::kVaryingIn_TypeModifier); 3716 vTexCoord.setTypeModifier(GrShaderVar::kVaryingIn_TypeModifier);
3715 vTexCoord.appendDecl(glslCaps, &fshaderTxt); 3717 vTexCoord.appendDecl(glslCaps, &fshaderTxt);
3716 fshaderTxt.append(";"); 3718 fshaderTxt.append(";");
3717 uTexture.appendDecl(glslCaps, &fshaderTxt); 3719 uTexture.appendDecl(glslCaps, &fshaderTxt);
3718 fshaderTxt.append(";"); 3720 fshaderTxt.append(";");
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
3775 SkASSERT(!fMipmapPrograms[progIdx].fProgram); 3777 SkASSERT(!fMipmapPrograms[progIdx].fProgram);
3776 GL_CALL_RET(fMipmapPrograms[progIdx].fProgram, CreateProgram()); 3778 GL_CALL_RET(fMipmapPrograms[progIdx].fProgram, CreateProgram());
3777 if (!fMipmapPrograms[progIdx].fProgram) { 3779 if (!fMipmapPrograms[progIdx].fProgram) {
3778 return false; 3780 return false;
3779 } 3781 }
3780 3782
3781 const char* version = glslCaps->versionDeclString(); 3783 const char* version = glslCaps->versionDeclString();
3782 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttribute _TypeModifier); 3784 GrGLSLShaderVar aVertex("a_vertex", kVec2f_GrSLType, GrShaderVar::kAttribute _TypeModifier);
3783 GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType, 3785 GrGLSLShaderVar uTexCoordXform("u_texCoordXform", kVec4f_GrSLType,
3784 GrShaderVar::kUniform_TypeModifier); 3786 GrShaderVar::kUniform_TypeModifier);
3785 GrGLSLShaderVar uTexture("u_texture", kSampler2D_GrSLType, GrShaderVar::kUni form_TypeModifier); 3787 GrGLSLShaderVar uTexture("u_texture", kTexture2DSampler_GrSLType,
3788 GrShaderVar::kUniform_TypeModifier);
3786 // We need 1, 2, or 4 texture coordinates (depending on parity of each dimen sion): 3789 // We need 1, 2, or 4 texture coordinates (depending on parity of each dimen sion):
3787 GrGLSLShaderVar vTexCoords[] = { 3790 GrGLSLShaderVar vTexCoords[] = {
3788 GrGLSLShaderVar("v_texCoord0", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier), 3791 GrGLSLShaderVar("v_texCoord0", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier),
3789 GrGLSLShaderVar("v_texCoord1", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier), 3792 GrGLSLShaderVar("v_texCoord1", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier),
3790 GrGLSLShaderVar("v_texCoord2", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier), 3793 GrGLSLShaderVar("v_texCoord2", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier),
3791 GrGLSLShaderVar("v_texCoord3", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier), 3794 GrGLSLShaderVar("v_texCoord3", kVec2f_GrSLType, GrShaderVar::kVaryingOut _TypeModifier),
3792 }; 3795 };
3793 GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType, 3796 GrGLSLShaderVar oFragColor("o_FragColor", kVec4f_GrSLType,
3794 GrShaderVar::kOut_TypeModifier); 3797 GrShaderVar::kOut_TypeModifier);
3795 3798
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
3862 uTexture.appendDecl(glslCaps, &fshaderTxt); 3865 uTexture.appendDecl(glslCaps, &fshaderTxt);
3863 fshaderTxt.append(";"); 3866 fshaderTxt.append(";");
3864 const char* fsOutName; 3867 const char* fsOutName;
3865 if (glslCaps->mustDeclareFragmentShaderOutput()) { 3868 if (glslCaps->mustDeclareFragmentShaderOutput()) {
3866 oFragColor.appendDecl(glslCaps, &fshaderTxt); 3869 oFragColor.appendDecl(glslCaps, &fshaderTxt);
3867 fshaderTxt.append(";"); 3870 fshaderTxt.append(";");
3868 fsOutName = oFragColor.c_str(); 3871 fsOutName = oFragColor.c_str();
3869 } else { 3872 } else {
3870 fsOutName = "gl_FragColor"; 3873 fsOutName = "gl_FragColor";
3871 } 3874 }
3872 const char* sampleFunction = GrGLSLTexture2DFunctionName(kVec2f_GrSLType, kS ampler2D_GrSLType, 3875 const char* sampleFunction = GrGLSLTexture2DFunctionName(kVec2f_GrSLType,
3876 kTexture2DSampler_G rSLType,
3873 this->glslGeneratio n()); 3877 this->glslGeneratio n());
3874 fshaderTxt.append( 3878 fshaderTxt.append(
3875 "// Mipmap Program FS\n" 3879 "// Mipmap Program FS\n"
3876 "void main() {" 3880 "void main() {"
3877 ); 3881 );
3878 3882
3879 if (oddWidth && oddHeight) { 3883 if (oddWidth && oddHeight) {
3880 fshaderTxt.appendf( 3884 fshaderTxt.appendf(
3881 " %s = (%s(u_texture, v_texCoord0) + %s(u_texture, v_texCoord1) + " 3885 " %s = (%s(u_texture, v_texCoord0) + %s(u_texture, v_texCoord1) + "
3882 " %s(u_texture, v_texCoord2) + %s(u_texture, v_texCoord3)) * 0.25;", 3886 " %s(u_texture, v_texCoord2) + %s(u_texture, v_texCoord3)) * 0.25;",
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
4607 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || 4611 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() ||
4608 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { 4612 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) {
4609 copyParams->fFilter = GrTextureParams::kNone_FilterMode; 4613 copyParams->fFilter = GrTextureParams::kNone_FilterMode;
4610 copyParams->fWidth = texture->width(); 4614 copyParams->fWidth = texture->width();
4611 copyParams->fHeight = texture->height(); 4615 copyParams->fHeight = texture->height();
4612 return true; 4616 return true;
4613 } 4617 }
4614 } 4618 }
4615 return false; 4619 return false;
4616 } 4620 }
OLDNEW
« no previous file with comments | « include/gpu/GrTypesPriv.h ('k') | src/gpu/gl/GrGLProgramDesc.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698