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

Side by Side Diff: Source/modules/webgl/WebGLRenderingContextBase.cpp

Issue 1310003006: WebGL Code Refactoring: remove redundant validations for texImage2D and texSubImage2D (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: remove unnecessary validations in texImage2D/texImage2DBase 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 | « no previous file | 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 (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 3994 matching lines...) Expand 10 before | Expand all | Expand 10 after
4005 return GL_RGBA32F_EXT; 4005 return GL_RGBA32F_EXT;
4006 if (type == GL_FLOAT && internalformat == GL_RGB 4006 if (type == GL_FLOAT && internalformat == GL_RGB
4007 && extensionsUtil()->isExtensionEnabled("GL_CHROMIUM_color_buffer_float_ rgb")) 4007 && extensionsUtil()->isExtensionEnabled("GL_CHROMIUM_color_buffer_float_ rgb"))
4008 return GL_RGB32F_EXT; 4008 return GL_RGB32F_EXT;
4009 return internalformat; 4009 return internalformat;
4010 } 4010 }
4011 4011
4012 void WebGLRenderingContextBase::texImage2DBase(GLenum target, GLint level, GLenu m internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GL enum type, const void* pixels) 4012 void WebGLRenderingContextBase::texImage2DBase(GLenum target, GLint level, GLenu m internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GL enum type, const void* pixels)
4013 { 4013 {
4014 // All calling functions check isContextLost, so a duplicate check is not ne eded here. 4014 // All calling functions check isContextLost, so a duplicate check is not ne eded here.
4015 // FIXME: Handle errors.
4016 WebGLTexture* tex = validateTextureBinding("texImage2D", target, true); 4015 WebGLTexture* tex = validateTextureBinding("texImage2D", target, true);
4017 ASSERT(validateTexFuncLevel("texImage2D", target, level));
4018 ASSERT(validateTexFuncParameters("texImage2D", NotTexSubImage2D, target, lev el, internalformat, width, height, border, format, type));
4019 ASSERT(tex); 4016 ASSERT(tex);
4020 ASSERT(!isNPOTStrict() || !level || !WebGLTexture::isNPOT(width, height));
4021 ASSERT(!pixels || validateSettableTexFormat("texImage2D", internalformat));
4022 webContext()->texImage2D(target, level, convertTexInternalFormat(internalfor mat, type), width, height, border, format, type, pixels); 4017 webContext()->texImage2D(target, level, convertTexInternalFormat(internalfor mat, type), width, height, border, format, type, pixels);
4023 tex->setLevelInfo(target, level, internalformat, width, height, 1, type); 4018 tex->setLevelInfo(target, level, internalformat, width, height, 1, type);
4024 } 4019 }
4025 4020
4026 void WebGLRenderingContextBase::texImage2DImpl(GLenum target, GLint level, GLenu m internalformat, GLenum format, GLenum type, Image* image, WebGLImageConversion ::ImageHtmlDomSource domSource, bool flipY, bool premultiplyAlpha) 4021 void WebGLRenderingContextBase::texImage2DImpl(GLenum target, GLint level, GLenu m internalformat, GLenum format, GLenum type, Image* image, WebGLImageConversion ::ImageHtmlDomSource domSource, bool flipY, bool premultiplyAlpha)
4027 { 4022 {
4028 // All calling functions check isContextLost, so a duplicate check is not ne eded here. 4023 // All calling functions check isContextLost, so a duplicate check is not ne eded here.
4029 Vector<uint8_t> data; 4024 Vector<uint8_t> data;
4030 WebGLImageConversion::ImageExtractor imageExtractor(image, domSource, premul tiplyAlpha, m_unpackColorspaceConversion == GL_NONE); 4025 WebGLImageConversion::ImageExtractor imageExtractor(image, domSource, premul tiplyAlpha, m_unpackColorspaceConversion == GL_NONE);
4031 if (!imageExtractor.extractSucceeded()) { 4026 if (!imageExtractor.extractSucceeded()) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
4068 } 4063 }
4069 } 4064 }
4070 4065
4071 if (internalformat == 0) 4066 if (internalformat == 0)
4072 internalformat = texture->getInternalFormat(target, level); 4067 internalformat = texture->getInternalFormat(target, level);
4073 if (!validateTexFuncParameters(functionName, functionType, target, level, in ternalformat, width, height, border, format, type)) 4068 if (!validateTexFuncParameters(functionName, functionType, target, level, in ternalformat, width, height, border, format, type))
4074 return false; 4069 return false;
4075 4070
4076 if (functionType == NotTexSubImage2D) { 4071 if (functionType == NotTexSubImage2D) {
4077 if (texture->isImmutable()) { 4072 if (texture->isImmutable()) {
4078 synthesizeGLError(GL_INVALID_OPERATION, "texImage2DBase", "attempted to modify immutable texture"); 4073 synthesizeGLError(GL_INVALID_OPERATION, "texImage2D", "attempted to modify immutable texture");
4079 return false; 4074 return false;
4080 } 4075 }
4081 4076
4082 if (isNPOTStrict() && level && WebGLTexture::isNPOT(width, height)) { 4077 if (isNPOTStrict() && level && WebGLTexture::isNPOT(width, height)) {
4083 synthesizeGLError(GL_INVALID_VALUE, functionName, "level > 0 not pow er of 2"); 4078 synthesizeGLError(GL_INVALID_VALUE, functionName, "level > 0 not pow er of 2");
4084 return false; 4079 return false;
4085 } 4080 }
4086 // For SourceArrayBufferView, function validateTexFuncData() would handl e whether to validate the SettableTexFormat 4081 // For SourceArrayBufferView, function validateTexFuncData() would handl e whether to validate the SettableTexFormat
4087 // by checking if the ArrayBufferView is null or not. 4082 // by checking if the ArrayBufferView is null or not.
4088 if (sourceType != SourceArrayBufferView) { 4083 if (sourceType != SourceArrayBufferView) {
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
4163 if (changeUnpackAlignment) 4158 if (changeUnpackAlignment)
4164 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); 4159 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
4165 texImage2DBase(target, level, internalformat, width, height, border, format, type, data); 4160 texImage2DBase(target, level, internalformat, width, height, border, format, type, data);
4166 if (changeUnpackAlignment) 4161 if (changeUnpackAlignment)
4167 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); 4162 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
4168 } 4163 }
4169 4164
4170 void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in ternalformat, 4165 void WebGLRenderingContextBase::texImage2D(GLenum target, GLint level, GLenum in ternalformat,
4171 GLenum format, GLenum type, ImageData* pixels) 4166 GLenum format, GLenum type, ImageData* pixels)
4172 { 4167 {
4173 if (isContextLost() || !pixels || !validateTexFunc("texImage2D", NotTexSubIm age2D, SourceImageData, target, level, internalformat, pixels->width(), pixels-> height(), 0, format, type, 0, 0)) 4168 if (!pixels) {
4169 synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "no image data");
4170 return;
4171 }
4172 if (isContextLost() || !validateTexFunc("texImage2D", NotTexSubImage2D, Sour ceImageData, target, level, internalformat, pixels->width(), pixels->height(), 0 , format, type, 0, 0))
4174 return; 4173 return;
4175 Vector<uint8_t> data; 4174 Vector<uint8_t> data;
4176 bool needConversion = true; 4175 bool needConversion = true;
4177 // The data from ImageData is always of format RGBA8. 4176 // The data from ImageData is always of format RGBA8.
4178 // No conversion is needed if destination format is RGBA and type is USIGNED _BYTE and no Flip or Premultiply operation is required. 4177 // No conversion is needed if destination format is RGBA and type is USIGNED _BYTE and no Flip or Premultiply operation is required.
4179 if (!m_unpackFlipY && !m_unpackPremultiplyAlpha && format == GL_RGBA && type == GL_UNSIGNED_BYTE) 4178 if (!m_unpackFlipY && !m_unpackPremultiplyAlpha && format == GL_RGBA && type == GL_UNSIGNED_BYTE)
4180 needConversion = false; 4179 needConversion = false;
4181 else { 4180 else {
4182 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) { 4181 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) {
4183 synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "bad image data"); 4182 synthesizeGLError(GL_INVALID_VALUE, "texImage2D", "bad image data");
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
4408 void WebGLRenderingContextBase::texParameterf(GLenum target, GLenum pname, GLflo at param) 4407 void WebGLRenderingContextBase::texParameterf(GLenum target, GLenum pname, GLflo at param)
4409 { 4408 {
4410 texParameter(target, pname, param, 0, true); 4409 texParameter(target, pname, param, 0, true);
4411 } 4410 }
4412 4411
4413 void WebGLRenderingContextBase::texParameteri(GLenum target, GLenum pname, GLint param) 4412 void WebGLRenderingContextBase::texParameteri(GLenum target, GLenum pname, GLint param)
4414 { 4413 {
4415 texParameter(target, pname, 0, param, false); 4414 texParameter(target, pname, 0, param, false);
4416 } 4415 }
4417 4416
4418 void WebGLRenderingContextBase::texSubImage2DBase(GLenum target, GLint level, GL int xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels)
4419 {
4420 // FIXME: Handle errors.
4421 ASSERT(!isContextLost());
4422 WebGLTexture* tex = validateTextureBinding("texSubImage2D", target, true);
4423 if (!tex) {
4424 ASSERT_NOT_REACHED();
4425 return;
4426 }
4427 ASSERT(validateTexFuncLevel("texSubImage2D", target, level));
4428 ASSERT(validateTexFuncParameters("texSubImage2D", TexSubImage2D, target, lev el, tex->getInternalFormat(target, level), width, height, 0, format, type));
4429 ASSERT(validateSize("texSubImage2D", xoffset, yoffset));
4430 ASSERT(validateSettableTexFormat("texSubImage2D", format));
4431 ASSERT((xoffset + width) >= 0);
4432 ASSERT((yoffset + height) >= 0);
4433 ASSERT(tex->getWidth(target, level) >= (xoffset + width));
4434 ASSERT(tex->getHeight(target, level) >= (yoffset + height));
4435 ASSERT(tex->getType(target, level) == type);
4436 webContext()->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
4437 }
4438
4439 void WebGLRenderingContextBase::texSubImage2DImpl(GLenum target, GLint level, GL int xoffset, GLint yoffset, GLenum format, GLenum type, Image* image, WebGLImage Conversion::ImageHtmlDomSource domSource, bool flipY, bool premultiplyAlpha) 4417 void WebGLRenderingContextBase::texSubImage2DImpl(GLenum target, GLint level, GL int xoffset, GLint yoffset, GLenum format, GLenum type, Image* image, WebGLImage Conversion::ImageHtmlDomSource domSource, bool flipY, bool premultiplyAlpha)
4440 { 4418 {
4441 // All calling functions check isContextLost, so a duplicate check is not ne eded here. 4419 // All calling functions check isContextLost, so a duplicate check is not ne eded here.
4442 Vector<uint8_t> data; 4420 Vector<uint8_t> data;
4443 WebGLImageConversion::ImageExtractor imageExtractor(image, domSource, premul tiplyAlpha, m_unpackColorspaceConversion == GL_NONE); 4421 WebGLImageConversion::ImageExtractor imageExtractor(image, domSource, premul tiplyAlpha, m_unpackColorspaceConversion == GL_NONE);
4444 if (!imageExtractor.extractSucceeded()) { 4422 if (!imageExtractor.extractSucceeded()) {
4445 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "bad image"); 4423 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "bad image");
4446 return; 4424 return;
4447 } 4425 }
4448 WebGLImageConversion::DataFormat sourceDataFormat = imageExtractor.imageSour ceFormat(); 4426 WebGLImageConversion::DataFormat sourceDataFormat = imageExtractor.imageSour ceFormat();
4449 WebGLImageConversion::AlphaOp alphaOp = imageExtractor.imageAlphaOp(); 4427 WebGLImageConversion::AlphaOp alphaOp = imageExtractor.imageAlphaOp();
4450 const void* imagePixelData = imageExtractor.imagePixelData(); 4428 const void* imagePixelData = imageExtractor.imagePixelData();
4451 4429
4452 bool needConversion = true; 4430 bool needConversion = true;
4453 if (type == GL_UNSIGNED_BYTE && sourceDataFormat == WebGLImageConversion::Da taFormatRGBA8 && format == GL_RGBA && alphaOp == WebGLImageConversion::AlphaDoNo thing && !flipY) 4431 if (type == GL_UNSIGNED_BYTE && sourceDataFormat == WebGLImageConversion::Da taFormatRGBA8 && format == GL_RGBA && alphaOp == WebGLImageConversion::AlphaDoNo thing && !flipY)
4454 needConversion = false; 4432 needConversion = false;
4455 else { 4433 else {
4456 if (!WebGLImageConversion::packImageData(image, imagePixelData, format, type, flipY, alphaOp, sourceDataFormat, imageExtractor.imageWidth(), imageExtrac tor.imageHeight(), imageExtractor.imageSourceUnpackAlignment(), data)) { 4434 if (!WebGLImageConversion::packImageData(image, imagePixelData, format, type, flipY, alphaOp, sourceDataFormat, imageExtractor.imageWidth(), imageExtrac tor.imageHeight(), imageExtractor.imageSourceUnpackAlignment(), data)) {
4457 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "bad image data "); 4435 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "bad image data ");
4458 return; 4436 return;
4459 } 4437 }
4460 } 4438 }
4461 4439
4462 if (m_unpackAlignment != 1) 4440 if (m_unpackAlignment != 1)
4463 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); 4441 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
4464 texSubImage2DBase(target, level, xoffset, yoffset, imageExtractor.imageWidth (), imageExtractor.imageHeight(), format, type, needConversion ? data.data() : imagePixelData); 4442 webContext()->texSubImage2D(target, level, xoffset, yoffset, imageExtractor. imageWidth(), imageExtractor.imageHeight(), format, type, needConversion ? data .data() : imagePixelData);
4465 if (m_unpackAlignment != 1) 4443 if (m_unpackAlignment != 1)
4466 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); 4444 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
4467 } 4445 }
4468 4446
4469 void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, 4447 void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
4470 GLsizei width, GLsizei height, 4448 GLsizei width, GLsizei height,
4471 GLenum format, GLenum type, DOMArrayBufferView* pixels) 4449 GLenum format, GLenum type, DOMArrayBufferView* pixels)
4472 { 4450 {
4473 WebGLTexture* texture = validateTextureBinding("texSubImage2D", target, true );
4474 if (!texture)
4475 return;
4476
4477 if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, Sour ceArrayBufferView, target, level, 0, width, height, 0, format, type, xoffset, yo ffset) 4451 if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, Sour ceArrayBufferView, target, level, 0, width, height, 0, format, type, xoffset, yo ffset)
4478 || !validateTexFuncData("texSubImage2D", level, width, height, format, t ype, pixels, NullNotAllowed)) 4452 || !validateTexFuncData("texSubImage2D", level, width, height, format, t ype, pixels, NullNotAllowed))
4479 return; 4453 return;
4480 void* data = pixels->baseAddress(); 4454 void* data = pixels->baseAddress();
4481 Vector<uint8_t> tempData; 4455 Vector<uint8_t> tempData;
4482 bool changeUnpackAlignment = false; 4456 bool changeUnpackAlignment = false;
4483 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) { 4457 if (data && (m_unpackFlipY || m_unpackPremultiplyAlpha)) {
4484 if (!WebGLImageConversion::extractTextureData(width, height, format, typ e, 4458 if (!WebGLImageConversion::extractTextureData(width, height, format, typ e,
4485 m_unpackAlignment, 4459 m_unpackAlignment,
4486 m_unpackFlipY, m_unpackPremultiplyAlp ha, 4460 m_unpackFlipY, m_unpackPremultiplyAlp ha,
4487 data, 4461 data,
4488 tempData)) 4462 tempData))
4489 return; 4463 return;
4490 data = tempData.data(); 4464 data = tempData.data();
4491 changeUnpackAlignment = true; 4465 changeUnpackAlignment = true;
4492 } 4466 }
4493 if (changeUnpackAlignment) 4467 if (changeUnpackAlignment)
4494 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); 4468 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
4495 texSubImage2DBase(target, level, xoffset, yoffset, width, height, format, ty pe, data); 4469 webContext()->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data);
4496 if (changeUnpackAlignment) 4470 if (changeUnpackAlignment)
4497 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); 4471 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
4498 } 4472 }
4499 4473
4500 void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, 4474 void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
4501 GLenum format, GLenum type, ImageData* pixels) 4475 GLenum format, GLenum type, ImageData* pixels)
4502 { 4476 {
4503 if (isContextLost() || !pixels || !validateTexFunc("texSubImage2D", TexSubIm age2D, SourceImageData, target, level, 0, pixels->width(), pixels->height(), 0, format, type, xoffset, yoffset)) 4477 if (!pixels) {
4478 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "no image data");
4479 return;
4480 }
4481 if (isContextLost() || !validateTexFunc("texSubImage2D", TexSubImage2D, Sour ceImageData, target, level, 0, pixels->width(), pixels->height(), 0, format, ty pe, xoffset, yoffset))
4504 return; 4482 return;
4505 4483
4506 Vector<uint8_t> data; 4484 Vector<uint8_t> data;
4507 bool needConversion = true; 4485 bool needConversion = true;
4508 // The data from ImageData is always of format RGBA8. 4486 // The data from ImageData is always of format RGBA8.
4509 // No conversion is needed if destination format is RGBA and type is USIGNED _BYTE and no Flip or Premultiply operation is required. 4487 // No conversion is needed if destination format is RGBA and type is USIGNED _BYTE and no Flip or Premultiply operation is required.
4510 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !m_unpackFlipY && !m_un packPremultiplyAlpha) 4488 if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !m_unpackFlipY && !m_un packPremultiplyAlpha)
4511 needConversion = false; 4489 needConversion = false;
4512 else { 4490 else {
4513 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) { 4491 if (!WebGLImageConversion::extractImageData(pixels->data()->data(), pixe ls->size(), format, type, m_unpackFlipY, m_unpackPremultiplyAlpha, data)) {
4514 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "bad image data "); 4492 synthesizeGLError(GL_INVALID_VALUE, "texSubImage2D", "bad image data ");
4515 return; 4493 return;
4516 } 4494 }
4517 } 4495 }
4518 if (m_unpackAlignment != 1) 4496 if (m_unpackAlignment != 1)
4519 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1); 4497 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, 1);
4520 texSubImage2DBase(target, level, xoffset, yoffset, pixels->width(), pixels-> height(), format, type, needConversion ? data.data() : pixels->data()->data()); 4498 webContext()->texSubImage2D(target, level, xoffset, yoffset, pixels->width() , pixels->height(), format, type, needConversion ? data.data() : pixels->data()- >data());
4521 if (m_unpackAlignment != 1) 4499 if (m_unpackAlignment != 1)
4522 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); 4500 webContext()->pixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
4523 } 4501 }
4524 4502
4525 void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, 4503 void WebGLRenderingContextBase::texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
4526 GLenum format, GLenum type, HTMLImageElement* image, ExceptionState& excepti onState) 4504 GLenum format, GLenum type, HTMLImageElement* image, ExceptionState& excepti onState)
4527 { 4505 {
4528 if (isContextLost() || !validateHTMLImageElement("texSubImage2D", image, exc eptionState)) 4506 if (isContextLost() || !validateHTMLImageElement("texSubImage2D", image, exc eptionState))
4529 return; 4507 return;
4530 4508
(...skipping 2198 matching lines...) Expand 10 before | Expand all | Expand 10 after
6729 6707
6730 return totalBytesPerPixel; 6708 return totalBytesPerPixel;
6731 } 6709 }
6732 6710
6733 DrawingBuffer* WebGLRenderingContextBase::drawingBuffer() const 6711 DrawingBuffer* WebGLRenderingContextBase::drawingBuffer() const
6734 { 6712 {
6735 return m_drawingBuffer.get(); 6713 return m_drawingBuffer.get();
6736 } 6714 }
6737 6715
6738 } // namespace blink 6716 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698