OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |