external/swiftshader
Revision | 894858a5bac9bfc8afde903e9c40a26631edde72 (tree) |
---|---|
Time | 2018-03-27 05:25:07 |
Author | Nicolas Capens <capn@goog...> |
Commiter | Nicolas Capens |
Don't upload array texture images six times.
Change-Id: I5be0cc629477b6cfb3ede6b4484f067d1c30b0ec
Reviewed-on: https://swiftshader-review.googlesource.com/17929
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
@@ -4249,7 +4249,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, | ||
4249 | 4249 | return error(GL_INVALID_VALUE); |
4250 | 4250 | } |
4251 | 4251 | |
4252 | - GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
4252 | + GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
4253 | 4253 | |
4254 | 4254 | es1::Context *context = es1::getContext(); |
4255 | 4255 |
@@ -925,7 +925,7 @@ void CopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, | ||
925 | 925 | { |
926 | 926 | return error(GL_INVALID_VALUE); |
927 | 927 | } |
928 | - // Fall through | |
928 | + // Fall through to GL_TEXTURE_2D case. | |
929 | 929 | case GL_TEXTURE_2D: |
930 | 930 | if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) || |
931 | 931 | height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level)) |
@@ -3463,24 +3463,24 @@ const GLubyte* GetString(GLenum name) | ||
3463 | 3463 | case GL_RENDERER: |
3464 | 3464 | return (GLubyte*)"Google SwiftShader"; |
3465 | 3465 | case GL_VERSION: |
3466 | - { | |
3467 | - es2::Context *context = es2::getContext(); | |
3468 | - return (context && (context->getClientVersion() >= 3)) ? | |
3469 | - (GLubyte*)"OpenGL ES 3.0 SwiftShader " VERSION_STRING : | |
3470 | - (GLubyte*)"OpenGL ES 2.0 SwiftShader " VERSION_STRING; | |
3471 | - } | |
3466 | + { | |
3467 | + es2::Context *context = es2::getContext(); | |
3468 | + return (context && (context->getClientVersion() >= 3)) ? | |
3469 | + (GLubyte*)"OpenGL ES 3.0 SwiftShader " VERSION_STRING : | |
3470 | + (GLubyte*)"OpenGL ES 2.0 SwiftShader " VERSION_STRING; | |
3471 | + } | |
3472 | 3472 | case GL_SHADING_LANGUAGE_VERSION: |
3473 | - { | |
3474 | - es2::Context *context = es2::getContext(); | |
3475 | - return (context && (context->getClientVersion() >= 3)) ? | |
3476 | - (GLubyte*)"OpenGL ES GLSL ES 3.00 SwiftShader " VERSION_STRING : | |
3477 | - (GLubyte*)"OpenGL ES GLSL ES 1.00 SwiftShader " VERSION_STRING; | |
3478 | - } | |
3473 | + { | |
3474 | + es2::Context *context = es2::getContext(); | |
3475 | + return (context && (context->getClientVersion() >= 3)) ? | |
3476 | + (GLubyte*)"OpenGL ES GLSL ES 3.00 SwiftShader " VERSION_STRING : | |
3477 | + (GLubyte*)"OpenGL ES GLSL ES 1.00 SwiftShader " VERSION_STRING; | |
3478 | + } | |
3479 | 3479 | case GL_EXTENSIONS: |
3480 | - { | |
3481 | - es2::Context *context = es2::getContext(); | |
3482 | - return context ? context->getExtensions(GL_INVALID_INDEX) : (GLubyte*)nullptr; | |
3483 | - } | |
3480 | + { | |
3481 | + es2::Context *context = es2::getContext(); | |
3482 | + return context ? context->getExtensions(GL_INVALID_INDEX) : (GLubyte*)nullptr; | |
3483 | + } | |
3484 | 3484 | default: |
3485 | 3485 | return error(GL_INVALID_ENUM, (GLubyte*)nullptr); |
3486 | 3486 | } |
@@ -4971,7 +4971,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, | ||
4971 | 4971 | } |
4972 | 4972 | } |
4973 | 4973 | |
4974 | - GLenum validationError = ValidateTextureFormatType(format, type, internalformat, target, context->getClientVersion()); | |
4974 | + GLenum validationError = ValidateTextureFormatType(format, type, internalformat, target, clientVersion); | |
4975 | 4975 | if(validationError != GL_NO_ERROR) |
4976 | 4976 | { |
4977 | 4977 | return error(validationError); |
@@ -4989,7 +4989,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, | ||
4989 | 4989 | { |
4990 | 4990 | return error(GL_INVALID_VALUE); // Defining level other than 0 is not allowed |
4991 | 4991 | } |
4992 | - // Fall through | |
4992 | + // Fall through to GL_TEXTURE_2D case. | |
4993 | 4993 | case GL_TEXTURE_2D: |
4994 | 4994 | if(width > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level) || |
4995 | 4995 | height > (es2::IMPLEMENTATION_MAX_TEXTURE_SIZE >> level)) |
@@ -5018,14 +5018,14 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, | ||
5018 | 5018 | return error(GL_INVALID_ENUM); |
5019 | 5019 | } |
5020 | 5020 | |
5021 | - GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
5022 | - | |
5023 | 5021 | validationError = context->getPixels(&data, type, context->getRequiredBufferSize(width, height, 1, format, type)); |
5024 | 5022 | if(validationError != GL_NO_ERROR) |
5025 | 5023 | { |
5026 | 5024 | return error(validationError); |
5027 | 5025 | } |
5028 | 5026 | |
5027 | + GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
5028 | + | |
5029 | 5029 | if(target == GL_TEXTURE_2D || target == GL_TEXTURE_RECTANGLE_ARB) |
5030 | 5030 | { |
5031 | 5031 | es2::Texture2D *texture = context->getTexture2D(target); |
@@ -6267,7 +6267,7 @@ void TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei wi | ||
6267 | 6267 | return error(validationError); |
6268 | 6268 | } |
6269 | 6269 | |
6270 | - GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
6270 | + GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
6271 | 6271 | texture->setImage(level, width, height, depth, sizedInternalFormat, format, type, context->getUnpackParameters(), data); |
6272 | 6272 | } |
6273 | 6273 | } |
@@ -264,18 +264,18 @@ GL_APICALL void GL_APIENTRY glReadBuffer(GLenum src) | ||
264 | 264 | case GL_COLOR_ATTACHMENT29: |
265 | 265 | case GL_COLOR_ATTACHMENT30: |
266 | 266 | case GL_COLOR_ATTACHMENT31: |
267 | - { | |
268 | - GLuint index = (src - GL_COLOR_ATTACHMENT0); | |
269 | - if(index >= MAX_COLOR_ATTACHMENTS) | |
270 | 267 | { |
271 | - return error(GL_INVALID_OPERATION); | |
272 | - } | |
273 | - if(readFramebufferName == 0) | |
274 | - { | |
275 | - return error(GL_INVALID_OPERATION); | |
268 | + GLuint index = (src - GL_COLOR_ATTACHMENT0); | |
269 | + if(index >= MAX_COLOR_ATTACHMENTS) | |
270 | + { | |
271 | + return error(GL_INVALID_OPERATION); | |
272 | + } | |
273 | + if(readFramebufferName == 0) | |
274 | + { | |
275 | + return error(GL_INVALID_OPERATION); | |
276 | + } | |
277 | + context->setFramebufferReadBuffer(src); | |
276 | 278 | } |
277 | - context->setFramebufferReadBuffer(src); | |
278 | - } | |
279 | 279 | break; |
280 | 280 | default: |
281 | 281 | return error(GL_INVALID_ENUM); |
@@ -387,7 +387,7 @@ GL_APICALL void GL_APIENTRY glTexImage3D(GLenum target, GLint level, GLint inter | ||
387 | 387 | return error(validationError); |
388 | 388 | } |
389 | 389 | |
390 | - GLenum sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
390 | + GLint sizedInternalFormat = gl::GetSizedInternalFormat(internalformat, type); | |
391 | 391 | texture->setImage(level, width, height, depth, sizedInternalFormat, format, type, context->getUnpackParameters(), data); |
392 | 392 | } |
393 | 393 | } |
@@ -3621,6 +3621,7 @@ GL_APICALL void GL_APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum | ||
3621 | 3621 | { |
3622 | 3622 | return error(GL_INVALID_ENUM); |
3623 | 3623 | } |
3624 | + // Fall through to GL_TEXTURE_2D case. | |
3624 | 3625 | case GL_TEXTURE_2D: |
3625 | 3626 | { |
3626 | 3627 | if((width > es2::IMPLEMENTATION_MAX_TEXTURE_SIZE) || |
@@ -3735,10 +3736,8 @@ GL_APICALL void GL_APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum | ||
3735 | 3736 | |
3736 | 3737 | for(int level = 0; level < levels; level++) |
3737 | 3738 | { |
3738 | - for(int face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; face++) | |
3739 | - { | |
3740 | - texture->setImage(level, width, height, depth, internalformat, GL_NONE, GL_NONE, context->getUnpackParameters(), nullptr); | |
3741 | - } | |
3739 | + texture->setImage(level, width, height, depth, internalformat, GL_NONE, GL_NONE, context->getUnpackParameters(), nullptr); | |
3740 | + | |
3742 | 3741 | width = std::max(1, (width / 2)); |
3743 | 3742 | height = std::max(1, (height / 2)); |
3744 | 3743 | } |