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

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

Issue 1359833004: Stop supporting HW dither (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: minor Created 5 years, 3 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') | no next file » | 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 8
9 #include "GrGLGpu.h" 9 #include "GrGLGpu.h"
10 #include "GrGLGLSL.h" 10 #include "GrGLGLSL.h"
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 279
280 /////////////////////////////////////////////////////////////////////////////// 280 ///////////////////////////////////////////////////////////////////////////////
281 281
282 void GrGLGpu::onResetContext(uint32_t resetBits) { 282 void GrGLGpu::onResetContext(uint32_t resetBits) {
283 // we don't use the zb at all 283 // we don't use the zb at all
284 if (resetBits & kMisc_GrGLBackendState) { 284 if (resetBits & kMisc_GrGLBackendState) {
285 GL_CALL(Disable(GR_GL_DEPTH_TEST)); 285 GL_CALL(Disable(GR_GL_DEPTH_TEST));
286 GL_CALL(DepthMask(GR_GL_FALSE)); 286 GL_CALL(DepthMask(GR_GL_FALSE));
287 287
288 fHWDrawFace = GrPipelineBuilder::kInvalid_DrawFace; 288 fHWDrawFace = GrPipelineBuilder::kInvalid_DrawFace;
289 fHWDitherEnabled = kUnknown_TriState;
290 289
291 if (kGL_GrGLStandard == this->glStandard()) { 290 if (kGL_GrGLStandard == this->glStandard()) {
292 // Desktop-only state that we never change 291 // Desktop-only state that we never change
293 if (!this->glCaps().isCoreProfile()) { 292 if (!this->glCaps().isCoreProfile()) {
294 GL_CALL(Disable(GR_GL_POINT_SMOOTH)); 293 GL_CALL(Disable(GR_GL_POINT_SMOOTH));
295 GL_CALL(Disable(GR_GL_LINE_SMOOTH)); 294 GL_CALL(Disable(GR_GL_LINE_SMOOTH));
296 GL_CALL(Disable(GR_GL_POLYGON_SMOOTH)); 295 GL_CALL(Disable(GR_GL_POLYGON_SMOOTH));
297 GL_CALL(Disable(GR_GL_POLYGON_STIPPLE)); 296 GL_CALL(Disable(GR_GL_POLYGON_STIPPLE));
298 GL_CALL(Disable(GR_GL_COLOR_LOGIC_OP)); 297 GL_CALL(Disable(GR_GL_COLOR_LOGIC_OP));
299 GL_CALL(Disable(GR_GL_INDEX_LOGIC_OP)); 298 GL_CALL(Disable(GR_GL_INDEX_LOGIC_OP));
(...skipping 16 matching lines...) Expand all
316 315
317 if (kGLES_GrGLStandard == this->glStandard() && 316 if (kGLES_GrGLStandard == this->glStandard() &&
318 this->hasExtension("GL_ARM_shader_framebuffer_fetch")) { 317 this->hasExtension("GL_ARM_shader_framebuffer_fetch")) {
319 // The arm extension requires specifically enabling MSAA fetching pe r sample. 318 // The arm extension requires specifically enabling MSAA fetching pe r sample.
320 // On some devices this may have a perf hit. Also multiple render t argets are disabled 319 // On some devices this may have a perf hit. Also multiple render t argets are disabled
321 GL_CALL(Enable(GR_GL_FETCH_PER_SAMPLE_ARM)); 320 GL_CALL(Enable(GR_GL_FETCH_PER_SAMPLE_ARM));
322 } 321 }
323 fHWWriteToColor = kUnknown_TriState; 322 fHWWriteToColor = kUnknown_TriState;
324 // we only ever use lines in hairline mode 323 // we only ever use lines in hairline mode
325 GL_CALL(LineWidth(1)); 324 GL_CALL(LineWidth(1));
325 GL_CALL(Disable(GR_GL_DITHER));
326 } 326 }
327 327
328 if (resetBits & kMSAAEnable_GrGLBackendState) { 328 if (resetBits & kMSAAEnable_GrGLBackendState) {
329 fMSAAEnabled = kUnknown_TriState; 329 fMSAAEnabled = kUnknown_TriState;
330 330
331 // In mixed samples mode coverage modulation allows the coverage to be c onverted to 331 // In mixed samples mode coverage modulation allows the coverage to be c onverted to
332 // "opacity", which can then be blended into the color buffer to accompl ish antialiasing. 332 // "opacity", which can then be blended into the color buffer to accompl ish antialiasing.
333 // Enable coverage modulation suitable for premultiplied alpha colors. 333 // Enable coverage modulation suitable for premultiplied alpha colors.
334 // This state has no effect when not rendering to a mixed sampled target . 334 // This state has no effect when not rendering to a mixed sampled target .
335 if (this->glCaps().shaderCaps()->mixedSamplesSupport()) { 335 if (this->glCaps().shaderCaps()->mixedSamplesSupport()) {
(...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1438 1438
1439 // See fall through note above 1439 // See fall through note above
1440 this->disableScissor(); 1440 this->disableScissor();
1441 } 1441 }
1442 1442
1443 bool GrGLGpu::flushGLState(const DrawArgs& args) { 1443 bool GrGLGpu::flushGLState(const DrawArgs& args) {
1444 GrXferProcessor::BlendInfo blendInfo; 1444 GrXferProcessor::BlendInfo blendInfo;
1445 const GrPipeline& pipeline = *args.fPipeline; 1445 const GrPipeline& pipeline = *args.fPipeline;
1446 args.fPipeline->getXferProcessor()->getBlendInfo(&blendInfo); 1446 args.fPipeline->getXferProcessor()->getBlendInfo(&blendInfo);
1447 1447
1448 this->flushDither(pipeline.isDitherState());
1449 this->flushColorWrite(blendInfo.fWriteColor); 1448 this->flushColorWrite(blendInfo.fWriteColor);
1450 this->flushDrawFace(pipeline.getDrawFace()); 1449 this->flushDrawFace(pipeline.getDrawFace());
1451 1450
1452 SkAutoTUnref<GrGLProgram> program(fProgramCache->refProgram(args)); 1451 SkAutoTUnref<GrGLProgram> program(fProgramCache->refProgram(args));
1453 if (!program) { 1452 if (!program) {
1454 GrCapsDebugf(this->caps(), "Failed to create program!\n"); 1453 GrCapsDebugf(this->caps(), "Failed to create program!\n");
1455 return false; 1454 return false;
1456 } 1455 }
1457 1456
1458 GrGLuint programID = program->programID(); 1457 GrGLuint programID = program->programID();
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 GL_CALL(TexParameteri(GR_GL_TEXTURE_2D, GR_GL_TEXTURE_SWIZZLE_A, swi zzle[3])); 2336 GL_CALL(TexParameteri(GR_GL_TEXTURE_2D, GR_GL_TEXTURE_SWIZZLE_A, swi zzle[3]));
2338 } else { 2337 } else {
2339 GR_STATIC_ASSERT(sizeof(newTexParams.fSwizzleRGBA[0]) == sizeof(GrGL int)); 2338 GR_STATIC_ASSERT(sizeof(newTexParams.fSwizzleRGBA[0]) == sizeof(GrGL int));
2340 const GrGLint* swizzle = reinterpret_cast<const GrGLint*>(newTexPara ms.fSwizzleRGBA); 2339 const GrGLint* swizzle = reinterpret_cast<const GrGLint*>(newTexPara ms.fSwizzleRGBA);
2341 GL_CALL(TexParameteriv(GR_GL_TEXTURE_2D, GR_GL_TEXTURE_SWIZZLE_RGBA, swizzle)); 2340 GL_CALL(TexParameteriv(GR_GL_TEXTURE_2D, GR_GL_TEXTURE_SWIZZLE_RGBA, swizzle));
2342 } 2341 }
2343 } 2342 }
2344 texture->setCachedTexParams(newTexParams, this->getResetTimestamp()); 2343 texture->setCachedTexParams(newTexParams, this->getResetTimestamp());
2345 } 2344 }
2346 2345
2347 void GrGLGpu::flushDither(bool dither) {
2348 if (dither) {
2349 if (kYes_TriState != fHWDitherEnabled) {
2350 GL_CALL(Enable(GR_GL_DITHER));
2351 fHWDitherEnabled = kYes_TriState;
2352 }
2353 } else {
2354 if (kNo_TriState != fHWDitherEnabled) {
2355 GL_CALL(Disable(GR_GL_DITHER));
2356 fHWDitherEnabled = kNo_TriState;
2357 }
2358 }
2359 }
2360
2361 void GrGLGpu::flushColorWrite(bool writeColor) { 2346 void GrGLGpu::flushColorWrite(bool writeColor) {
2362 if (!writeColor) { 2347 if (!writeColor) {
2363 if (kNo_TriState != fHWWriteToColor) { 2348 if (kNo_TriState != fHWWriteToColor) {
2364 GL_CALL(ColorMask(GR_GL_FALSE, GR_GL_FALSE, 2349 GL_CALL(ColorMask(GR_GL_FALSE, GR_GL_FALSE,
2365 GR_GL_FALSE, GR_GL_FALSE)); 2350 GR_GL_FALSE, GR_GL_FALSE));
2366 fHWWriteToColor = kNo_TriState; 2351 fHWWriteToColor = kNo_TriState;
2367 } 2352 }
2368 } else { 2353 } else {
2369 if (kYes_TriState != fHWWriteToColor) { 2354 if (kYes_TriState != fHWWriteToColor) {
2370 GL_CALL(ColorMask(GR_GL_TRUE, GR_GL_TRUE, GR_GL_TRUE, GR_GL_TRUE)); 2355 GL_CALL(ColorMask(GR_GL_TRUE, GR_GL_TRUE, GR_GL_TRUE, GR_GL_TRUE));
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
2923 } 2908 }
2924 2909
2925 GL_CALL(Uniform4f(fCopyProgram.fPosXformUniform, dx1 - dx0, dy1 - dy0, dx0, dy0)); 2910 GL_CALL(Uniform4f(fCopyProgram.fPosXformUniform, dx1 - dx0, dy1 - dy0, dx0, dy0));
2926 GL_CALL(Uniform4f(fCopyProgram.fTexCoordXformUniform, sx1 - sx0, sy1 - sy0, sx0, sy0)); 2911 GL_CALL(Uniform4f(fCopyProgram.fTexCoordXformUniform, sx1 - sx0, sy1 - sy0, sx0, sy0));
2927 GL_CALL(Uniform1i(fCopyProgram.fTextureUniform, 0)); 2912 GL_CALL(Uniform1i(fCopyProgram.fTextureUniform, 0));
2928 2913
2929 GrXferProcessor::BlendInfo blendInfo; 2914 GrXferProcessor::BlendInfo blendInfo;
2930 blendInfo.reset(); 2915 blendInfo.reset();
2931 this->flushBlend(blendInfo); 2916 this->flushBlend(blendInfo);
2932 this->flushColorWrite(true); 2917 this->flushColorWrite(true);
2933 this->flushDither(false);
2934 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace); 2918 this->flushDrawFace(GrPipelineBuilder::kBoth_DrawFace);
2935 this->flushHWAAState(dstRT, false); 2919 this->flushHWAAState(dstRT, false);
2936 this->disableScissor(); 2920 this->disableScissor();
2937 GrStencilSettings stencil; 2921 GrStencilSettings stencil;
2938 stencil.setDisabled(); 2922 stencil.setDisabled();
2939 this->flushStencil(stencil); 2923 this->flushStencil(stencil);
2940 2924
2941 GL_CALL(DrawArrays(GR_GL_TRIANGLE_STRIP, 0, 4)); 2925 GL_CALL(DrawArrays(GR_GL_TRIANGLE_STRIP, 0, 4));
2942 } 2926 }
2943 2927
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
3160 this->setVertexArrayID(gpu, 0); 3144 this->setVertexArrayID(gpu, 0);
3161 } 3145 }
3162 int attrCount = gpu->glCaps().maxVertexAttributes(); 3146 int attrCount = gpu->glCaps().maxVertexAttributes();
3163 if (fDefaultVertexArrayAttribState.count() != attrCount) { 3147 if (fDefaultVertexArrayAttribState.count() != attrCount) {
3164 fDefaultVertexArrayAttribState.resize(attrCount); 3148 fDefaultVertexArrayAttribState.resize(attrCount);
3165 } 3149 }
3166 attribState = &fDefaultVertexArrayAttribState; 3150 attribState = &fDefaultVertexArrayAttribState;
3167 } 3151 }
3168 return attribState; 3152 return attribState;
3169 } 3153 }
OLDNEW
« no previous file with comments | « src/gpu/gl/GrGLGpu.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698