Driver bug workaround: pack_parameters_workaround_with_pack_buffer

Bug: chromium: 829614
Change-Id: I3fae2b4181e4a6e37fb31fe2f2e9a6cfacb1860f
Reviewed-on: https://skia-review.googlesource.com/128206
Commit-Queue: Adrienne Walker <enne@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This commit is contained in:
Adrienne Walker 2018-05-15 13:03:13 -07:00 committed by Skia Commit-Bot
parent cbeae03cae
commit c48f776682
3 changed files with 27 additions and 15 deletions

View File

@ -5,19 +5,21 @@
// This file is auto-generated from build_workaround_header.py
// DO NOT EDIT!
#define GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)\
GPU_OP(DISABLE_BLEND_EQUATION_ADVANCED, \
disable_blend_equation_advanced) \
GPU_OP(DISABLE_DISCARD_FRAMEBUFFER, \
disable_discard_framebuffer) \
GPU_OP(DISALLOW_LARGE_INSTANCED_DRAW, \
disallow_large_instanced_draw) \
GPU_OP(GL_CLEAR_BROKEN, \
gl_clear_broken) \
GPU_OP(MAX_MSAA_SAMPLE_COUNT_4, \
max_msaa_sample_count_4) \
GPU_OP(MAX_TEXTURE_SIZE_LIMIT_4096, \
max_texture_size_limit_4096) \
GPU_OP(RESTORE_SCISSOR_ON_FBO_CHANGE, \
restore_scissor_on_fbo_change) \
#define GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) \
GPU_OP(DISABLE_BLEND_EQUATION_ADVANCED, \
disable_blend_equation_advanced) \
GPU_OP(DISABLE_DISCARD_FRAMEBUFFER, \
disable_discard_framebuffer) \
GPU_OP(DISALLOW_LARGE_INSTANCED_DRAW, \
disallow_large_instanced_draw) \
GPU_OP(GL_CLEAR_BROKEN, \
gl_clear_broken) \
GPU_OP(MAX_MSAA_SAMPLE_COUNT_4, \
max_msaa_sample_count_4) \
GPU_OP(MAX_TEXTURE_SIZE_LIMIT_4096, \
max_texture_size_limit_4096) \
GPU_OP(PACK_PARAMETERS_WORKAROUND_WITH_PACK_BUFFER, \
pack_parameters_workaround_with_pack_buffer) \
GPU_OP(RESTORE_SCISSOR_ON_FBO_CHANGE, \
restore_scissor_on_fbo_change) \
// The End

View File

@ -109,6 +109,15 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
ctxInfo.hasExtension("GL_ANGLE_pack_reverse_row_order");
}
if (fDriverBugWorkarounds.pack_parameters_workaround_with_pack_buffer) {
// In some cases drivers handle copying the last row incorrectly
// when using GL_PACK_ROW_LENGTH. Chromium handles this by iterating
// through every row and conditionally clobbering that value, but
// Skia already has a scratch buffer workaround when pack row length
// is not supported, so just use that.
fPackRowLengthSupport = false;
}
fTextureUsageSupport = (kGLES_GrGLStandard == standard) &&
ctxInfo.hasExtension("GL_ANGLE_texture_usage");

View File

@ -4,4 +4,5 @@ disallow_large_instanced_draw
gl_clear_broken
max_msaa_sample_count_4
max_texture_size_limit_4096
pack_parameters_workaround_with_pack_buffer
restore_scissor_on_fbo_change