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

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

Issue 1669853002: Improve GLSL integer support (Closed) Base URL: https://skia.googlesource.com/skia.git@uploat_dratindirect
Patch Set: rebase Created 4 years, 10 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 | « src/gpu/gl/GrGLCreateNullInterface.cpp ('k') | src/gpu/gl/GrGLInterface.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 "GrGLGLSL.h" 9 #include "GrGLGLSL.h"
10 #include "GrGLStencilAttachment.h" 10 #include "GrGLStencilAttachment.h"
(...skipping 1741 matching lines...) Expand 10 before | Expand all | Expand 10 after
1752 uint32_t usedAttribArraysMask = 0; 1752 uint32_t usedAttribArraysMask = 0;
1753 size_t offset = 0; 1753 size_t offset = 0;
1754 1754
1755 for (int attribIndex = 0; attribIndex < vaCount; attribIndex++) { 1755 for (int attribIndex = 0; attribIndex < vaCount; attribIndex++) {
1756 const GrGeometryProcessor::Attribute& attrib = primProc.getAttrib(at tribIndex); 1756 const GrGeometryProcessor::Attribute& attrib = primProc.getAttrib(at tribIndex);
1757 usedAttribArraysMask |= (1 << attribIndex); 1757 usedAttribArraysMask |= (1 << attribIndex);
1758 GrVertexAttribType attribType = attrib.fType; 1758 GrVertexAttribType attribType = attrib.fType;
1759 attribState->set(this, 1759 attribState->set(this,
1760 attribIndex, 1760 attribIndex,
1761 vbuf->bufferID(), 1761 vbuf->bufferID(),
1762 GrGLAttribTypeToLayout(attribType).fCount, 1762 attribType,
1763 GrGLAttribTypeToLayout(attribType).fType,
1764 GrGLAttribTypeToLayout(attribType).fNormalized,
1765 stride, 1763 stride,
1766 reinterpret_cast<GrGLvoid*>(vertexOffsetInBytes + o ffset)); 1764 reinterpret_cast<GrGLvoid*>(vertexOffsetInBytes + o ffset));
1767 offset += attrib.fOffset; 1765 offset += attrib.fOffset;
1768 } 1766 }
1769 attribState->disableUnusedArrays(this, usedAttribArraysMask); 1767 attribState->disableUnusedArrays(this, usedAttribArraysMask);
1770 } 1768 }
1771 } 1769 }
1772 1770
1773 void GrGLGpu::buildProgramDesc(GrProgramDesc* desc, 1771 void GrGLGpu::buildProgramDesc(GrProgramDesc* desc,
1774 const GrPrimitiveProcessor& primProc, 1772 const GrPrimitiveProcessor& primProc,
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
2533 #endif 2531 #endif
2534 } 2532 }
2535 2533
2536 void GrGLGpu::stampRectUsingProgram(GrGLuint program, const SkRect& bounds, GrGL int posXformUniform, 2534 void GrGLGpu::stampRectUsingProgram(GrGLuint program, const SkRect& bounds, GrGL int posXformUniform,
2537 GrGLuint arrayBuffer) { 2535 GrGLuint arrayBuffer) {
2538 GL_CALL(UseProgram(program)); 2536 GL_CALL(UseProgram(program));
2539 this->fHWGeometryState.setVertexArrayID(this, 0); 2537 this->fHWGeometryState.setVertexArrayID(this, 0);
2540 2538
2541 GrGLAttribArrayState* attribs = 2539 GrGLAttribArrayState* attribs =
2542 this->fHWGeometryState.bindArrayAndBufferToDraw(this, arrayBuffer); 2540 this->fHWGeometryState.bindArrayAndBufferToDraw(this, arrayBuffer);
2543 attribs->set(this, 0, arrayBuffer, 2, GR_GL_FLOAT, false, 2 * sizeof(GrGLflo at), 0); 2541 attribs->set(this, 0, arrayBuffer, kVec2f_GrVertexAttribType, 2 * sizeof(GrG Lfloat), 0);
2544 attribs->disableUnusedArrays(this, 0x1); 2542 attribs->disableUnusedArrays(this, 0x1);
2545 2543
2546 GL_CALL(Uniform4f(posXformUniform, bounds.width(), bounds.height(), bounds.l eft(), 2544 GL_CALL(Uniform4f(posXformUniform, bounds.width(), bounds.height(), bounds.l eft(),
2547 bounds.top())); 2545 bounds.top()));
2548 2546
2549 GrXferProcessor::BlendInfo blendInfo; 2547 GrXferProcessor::BlendInfo blendInfo;
2550 blendInfo.reset(); 2548 blendInfo.reset();
2551 this->flushBlend(blendInfo, GrSwizzle()); 2549 this->flushBlend(blendInfo, GrSwizzle());
2552 this->flushColorWrite(true); 2550 this->flushColorWrite(true);
2553 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace); 2551 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace);
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
3474 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(rt->asRenderTarget() ); 3472 GrGLRenderTarget* glRT = static_cast<GrGLRenderTarget*>(rt->asRenderTarget() );
3475 this->flushRenderTarget(glRT, &rect); 3473 this->flushRenderTarget(glRT, &rect);
3476 3474
3477 GL_CALL(UseProgram(fWireRectProgram.fProgram)); 3475 GL_CALL(UseProgram(fWireRectProgram.fProgram));
3478 fHWProgramID = fWireRectProgram.fProgram; 3476 fHWProgramID = fWireRectProgram.fProgram;
3479 3477
3480 fHWGeometryState.setVertexArrayID(this, 0); 3478 fHWGeometryState.setVertexArrayID(this, 0);
3481 3479
3482 GrGLAttribArrayState* attribs = 3480 GrGLAttribArrayState* attribs =
3483 fHWGeometryState.bindArrayAndBufferToDraw(this, fWireRectArrayBuffer); 3481 fHWGeometryState.bindArrayAndBufferToDraw(this, fWireRectArrayBuffer);
3484 attribs->set(this, 0, fWireRectArrayBuffer, 2, GR_GL_FLOAT, false, 2 * sizeo f(GrGLfloat), 0); 3482 attribs->set(this, 0, fWireRectArrayBuffer, kVec2f_GrVertexAttribType, 2 * s izeof(GrGLfloat),
3483 0);
3485 attribs->disableUnusedArrays(this, 0x1); 3484 attribs->disableUnusedArrays(this, 0x1);
3486 3485
3487 GL_CALL(Uniform4fv(fWireRectProgram.fRectUniform, 1, edges)); 3486 GL_CALL(Uniform4fv(fWireRectProgram.fRectUniform, 1, edges));
3488 GL_CALL(Uniform4fv(fWireRectProgram.fColorUniform, 1, channels)); 3487 GL_CALL(Uniform4fv(fWireRectProgram.fColorUniform, 1, channels));
3489 3488
3490 GrXferProcessor::BlendInfo blendInfo; 3489 GrXferProcessor::BlendInfo blendInfo;
3491 blendInfo.reset(); 3490 blendInfo.reset();
3492 this->flushBlend(blendInfo, GrSwizzle::RGBA()); 3491 this->flushBlend(blendInfo, GrSwizzle::RGBA());
3493 this->flushColorWrite(true); 3492 this->flushColorWrite(true);
3494 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace); 3493 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace);
(...skipping 24 matching lines...) Expand all
3519 3518
3520 int progIdx = TextureTargetToCopyProgramIdx(srcTex->target()); 3519 int progIdx = TextureTargetToCopyProgramIdx(srcTex->target());
3521 3520
3522 GL_CALL(UseProgram(fCopyPrograms[progIdx].fProgram)); 3521 GL_CALL(UseProgram(fCopyPrograms[progIdx].fProgram));
3523 fHWProgramID = fCopyPrograms[progIdx].fProgram; 3522 fHWProgramID = fCopyPrograms[progIdx].fProgram;
3524 3523
3525 fHWGeometryState.setVertexArrayID(this, 0); 3524 fHWGeometryState.setVertexArrayID(this, 0);
3526 3525
3527 GrGLAttribArrayState* attribs = 3526 GrGLAttribArrayState* attribs =
3528 fHWGeometryState.bindArrayAndBufferToDraw(this, fCopyProgramArrayBuffer) ; 3527 fHWGeometryState.bindArrayAndBufferToDraw(this, fCopyProgramArrayBuffer) ;
3529 attribs->set(this, 0, fCopyProgramArrayBuffer, 2, GR_GL_FLOAT, false, 2 * si zeof(GrGLfloat), 0); 3528 attribs->set(this, 0, fCopyProgramArrayBuffer, kVec2f_GrVertexAttribType, 2 * sizeof(GrGLfloat),
3529 0);
3530 attribs->disableUnusedArrays(this, 0x1); 3530 attribs->disableUnusedArrays(this, 0x1);
3531 3531
3532 // dst rect edges in NDC (-1 to 1) 3532 // dst rect edges in NDC (-1 to 1)
3533 int dw = dst->width(); 3533 int dw = dst->width();
3534 int dh = dst->height(); 3534 int dh = dst->height();
3535 GrGLfloat dx0 = 2.f * dstPoint.fX / dw - 1.f; 3535 GrGLfloat dx0 = 2.f * dstPoint.fX / dw - 1.f;
3536 GrGLfloat dx1 = 2.f * (dstPoint.fX + w) / dw - 1.f; 3536 GrGLfloat dx1 = 2.f * (dstPoint.fX + w) / dw - 1.f;
3537 GrGLfloat dy0 = 2.f * dstPoint.fY / dh - 1.f; 3537 GrGLfloat dy0 = 2.f * dstPoint.fY / dh - 1.f;
3538 GrGLfloat dy1 = 2.f * (dstPoint.fY + h) / dh - 1.f; 3538 GrGLfloat dy1 = 2.f * (dstPoint.fY + h) / dh - 1.f;
3539 if (kBottomLeft_GrSurfaceOrigin == dst->origin()) { 3539 if (kBottomLeft_GrSurfaceOrigin == dst->origin()) {
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
3843 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || 3843 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() ||
3844 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { 3844 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) {
3845 copyParams->fFilter = GrTextureParams::kNone_FilterMode; 3845 copyParams->fFilter = GrTextureParams::kNone_FilterMode;
3846 copyParams->fWidth = texture->width(); 3846 copyParams->fWidth = texture->width();
3847 copyParams->fHeight = texture->height(); 3847 copyParams->fHeight = texture->height();
3848 return true; 3848 return true;
3849 } 3849 }
3850 } 3850 }
3851 return false; 3851 return false;
3852 } 3852 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLCreateNullInterface.cpp ('k') | src/gpu/gl/GrGLInterface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698