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

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

Issue 1812223002: added support for glMinSampleShading (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: updated for Jim's change Created 4 years, 9 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/GrGLGpu.h ('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 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 fWireRectProgram.fProgram = 0; 226 fWireRectProgram.fProgram = 0;
227 fWireRectArrayBuffer = 0; 227 fWireRectArrayBuffer = 0;
228 if (this->glCaps().shaderCaps()->plsPathRenderingSupport()) { 228 if (this->glCaps().shaderCaps()->plsPathRenderingSupport()) {
229 this->createPLSSetupProgram(); 229 this->createPLSSetupProgram();
230 } 230 }
231 else { 231 else {
232 memset(&fPLSSetupProgram, 0, sizeof(fPLSSetupProgram)); 232 memset(&fPLSSetupProgram, 0, sizeof(fPLSSetupProgram));
233 } 233 }
234 fHWPLSEnabled = false; 234 fHWPLSEnabled = false;
235 fPLSHasBeenUsed = false; 235 fPLSHasBeenUsed = false;
236 fHWMinSampleShading = 0.0;
236 } 237 }
237 238
238 GrGLGpu::~GrGLGpu() { 239 GrGLGpu::~GrGLGpu() {
239 // Delete the path rendering explicitly, since it will need working gpu obje ct to release the 240 // Delete the path rendering explicitly, since it will need working gpu obje ct to release the
240 // resources the object itself holds. 241 // resources the object itself holds.
241 fPathRendering.reset(); 242 fPathRendering.reset();
242 243
243 if (0 != fHWProgramID) { 244 if (0 != fHWProgramID) {
244 // detach the current program so there is no confusion on OpenGL's part 245 // detach the current program so there is no confusion on OpenGL's part
245 // that we want it to be deleted 246 // that we want it to be deleted
(...skipping 1817 matching lines...) Expand 10 before | Expand all | Expand 10 after
2063 fHWScissorSettings.fEnabled = kYes_TriState; 2064 fHWScissorSettings.fEnabled = kYes_TriState;
2064 } 2065 }
2065 return; 2066 return;
2066 } 2067 }
2067 } 2068 }
2068 2069
2069 // See fall through note above 2070 // See fall through note above
2070 this->disableScissor(); 2071 this->disableScissor();
2071 } 2072 }
2072 2073
2074 void GrGLGpu::flushMinSampleShading(float minSampleShading) {
2075 if (fHWMinSampleShading != minSampleShading) {
2076 if (minSampleShading > 0.0) {
2077 GL_CALL(Enable(GR_GL_SAMPLE_SHADING));
2078 GL_CALL(MinSampleShading(minSampleShading));
2079 }
2080 else {
2081 GL_CALL(Disable(GR_GL_SAMPLE_SHADING));
2082 }
2083 fHWMinSampleShading = minSampleShading;
2084 }
2085 }
2086
2073 bool GrGLGpu::flushGLState(const GrPipeline& pipeline, const GrPrimitiveProcesso r& primProc) { 2087 bool GrGLGpu::flushGLState(const GrPipeline& pipeline, const GrPrimitiveProcesso r& primProc) {
2074 GrXferProcessor::BlendInfo blendInfo; 2088 GrXferProcessor::BlendInfo blendInfo;
2075 pipeline.getXferProcessor().getBlendInfo(&blendInfo); 2089 pipeline.getXferProcessor().getBlendInfo(&blendInfo);
2076 2090
2077 this->flushColorWrite(blendInfo.fWriteColor); 2091 this->flushColorWrite(blendInfo.fWriteColor);
2078 this->flushDrawFace(pipeline.getDrawFace()); 2092 this->flushDrawFace(pipeline.getDrawFace());
2093 this->flushMinSampleShading(primProc.getSampleShading());
2079 2094
2080 SkAutoTUnref<GrGLProgram> program(fProgramCache->refProgram(this, pipeline, primProc)); 2095 SkAutoTUnref<GrGLProgram> program(fProgramCache->refProgram(this, pipeline, primProc));
2081 if (!program) { 2096 if (!program) {
2082 GrCapsDebugf(this->caps(), "Failed to create program!\n"); 2097 GrCapsDebugf(this->caps(), "Failed to create program!\n");
2083 return false; 2098 return false;
2084 } 2099 }
2085 2100
2086 GrGLuint programID = program->programID(); 2101 GrGLuint programID = program->programID();
2087 if (fHWProgramID != programID) { 2102 if (fHWProgramID != programID) {
2088 GL_CALL(UseProgram(programID)); 2103 GL_CALL(UseProgram(programID));
(...skipping 2328 matching lines...) Expand 10 before | Expand all | Expand 10 after
4417 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() || 4432 if (GR_GL_TEXTURE_EXTERNAL == glTexture->target() ||
4418 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) { 4433 GR_GL_TEXTURE_RECTANGLE == glTexture->target()) {
4419 copyParams->fFilter = GrTextureParams::kNone_FilterMode; 4434 copyParams->fFilter = GrTextureParams::kNone_FilterMode;
4420 copyParams->fWidth = texture->width(); 4435 copyParams->fWidth = texture->width();
4421 copyParams->fHeight = texture->height(); 4436 copyParams->fHeight = texture->height();
4422 return true; 4437 return true;
4423 } 4438 }
4424 } 4439 }
4425 return false; 4440 return false;
4426 } 4441 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLGpu.h ('k') | src/gpu/gl/GrGLInterface.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698