OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 #include <stdio.h> | 10 #include <stdio.h> |
(...skipping 12096 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12107 | 12107 |
12108 bool GLES2DecoderImpl::GetCompressedTexSizeInBytes( | 12108 bool GLES2DecoderImpl::GetCompressedTexSizeInBytes( |
12109 const char* function_name, GLsizei width, GLsizei height, GLsizei depth, | 12109 const char* function_name, GLsizei width, GLsizei height, GLsizei depth, |
12110 GLenum format, GLsizei* size_in_bytes) { | 12110 GLenum format, GLsizei* size_in_bytes) { |
12111 base::CheckedNumeric<GLsizei> bytes_required(0); | 12111 base::CheckedNumeric<GLsizei> bytes_required(0); |
12112 | 12112 |
12113 switch (format) { | 12113 switch (format) { |
12114 case GL_ATC_RGB_AMD: | 12114 case GL_ATC_RGB_AMD: |
12115 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: | 12115 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: |
12116 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: | 12116 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: |
| 12117 case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: |
| 12118 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: |
12117 case GL_ETC1_RGB8_OES: | 12119 case GL_ETC1_RGB8_OES: |
12118 bytes_required = | 12120 bytes_required = |
12119 (width + kS3TCBlockWidth - 1) / kS3TCBlockWidth; | 12121 (width + kS3TCBlockWidth - 1) / kS3TCBlockWidth; |
12120 bytes_required *= | 12122 bytes_required *= |
12121 (height + kS3TCBlockHeight - 1) / kS3TCBlockHeight; | 12123 (height + kS3TCBlockHeight - 1) / kS3TCBlockHeight; |
12122 bytes_required *= kS3TCDXT1BlockSize; | 12124 bytes_required *= kS3TCDXT1BlockSize; |
12123 break; | 12125 break; |
12124 case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: | 12126 case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: |
12125 case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: | 12127 case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: |
12126 case GL_COMPRESSED_RGBA_ASTC_5x5_KHR: | 12128 case GL_COMPRESSED_RGBA_ASTC_5x5_KHR: |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12161 bytes_required *= | 12163 bytes_required *= |
12162 (height + kBlockHeight - 1) / kBlockHeight; | 12164 (height + kBlockHeight - 1) / kBlockHeight; |
12163 | 12165 |
12164 bytes_required *= kASTCBlockSize; | 12166 bytes_required *= kASTCBlockSize; |
12165 break; | 12167 break; |
12166 } | 12168 } |
12167 case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD: | 12169 case GL_ATC_RGBA_EXPLICIT_ALPHA_AMD: |
12168 case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD: | 12170 case GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD: |
12169 case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: | 12171 case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: |
12170 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: | 12172 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: |
| 12173 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: |
| 12174 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: |
12171 bytes_required = | 12175 bytes_required = |
12172 (width + kS3TCBlockWidth - 1) / kS3TCBlockWidth; | 12176 (width + kS3TCBlockWidth - 1) / kS3TCBlockWidth; |
12173 bytes_required *= | 12177 bytes_required *= |
12174 (height + kS3TCBlockHeight - 1) / kS3TCBlockHeight; | 12178 (height + kS3TCBlockHeight - 1) / kS3TCBlockHeight; |
12175 bytes_required *= kS3TCDXT3AndDXT5BlockSize; | 12179 bytes_required *= kS3TCDXT3AndDXT5BlockSize; |
12176 break; | 12180 break; |
12177 case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: | 12181 case GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG: |
12178 case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: | 12182 case GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: |
12179 bytes_required = std::max(width, 8); | 12183 bytes_required = std::max(width, 8); |
12180 bytes_required *= std::max(height, 8); | 12184 bytes_required *= std::max(height, 8); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12272 } | 12276 } |
12273 | 12277 |
12274 bool GLES2DecoderImpl::ValidateCompressedTexDimensions( | 12278 bool GLES2DecoderImpl::ValidateCompressedTexDimensions( |
12275 const char* function_name, GLenum target, GLint level, | 12279 const char* function_name, GLenum target, GLint level, |
12276 GLsizei width, GLsizei height, GLsizei depth, GLenum format) { | 12280 GLsizei width, GLsizei height, GLsizei depth, GLenum format) { |
12277 switch (format) { | 12281 switch (format) { |
12278 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: | 12282 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: |
12279 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: | 12283 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: |
12280 case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: | 12284 case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: |
12281 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: | 12285 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: |
| 12286 case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: |
| 12287 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: |
| 12288 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: |
| 12289 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: |
12282 DCHECK_EQ(1, depth); // 2D formats. | 12290 DCHECK_EQ(1, depth); // 2D formats. |
12283 if (!IsValidDXTSize(level, width) || !IsValidDXTSize(level, height)) { | 12291 if (!IsValidDXTSize(level, width) || !IsValidDXTSize(level, height)) { |
12284 LOCAL_SET_GL_ERROR( | 12292 LOCAL_SET_GL_ERROR( |
12285 GL_INVALID_OPERATION, function_name, | 12293 GL_INVALID_OPERATION, function_name, |
12286 "width or height invalid for level"); | 12294 "width or height invalid for level"); |
12287 return false; | 12295 return false; |
12288 } | 12296 } |
12289 return true; | 12297 return true; |
12290 case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: | 12298 case GL_COMPRESSED_RGBA_ASTC_4x4_KHR: |
12291 case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: | 12299 case GL_COMPRESSED_RGBA_ASTC_5x4_KHR: |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12378 if (xoffset < 0 || yoffset < 0 || zoffset < 0) { | 12386 if (xoffset < 0 || yoffset < 0 || zoffset < 0) { |
12379 LOCAL_SET_GL_ERROR( | 12387 LOCAL_SET_GL_ERROR( |
12380 GL_INVALID_VALUE, function_name, "x/y/z offset < 0"); | 12388 GL_INVALID_VALUE, function_name, "x/y/z offset < 0"); |
12381 return false; | 12389 return false; |
12382 } | 12390 } |
12383 | 12391 |
12384 switch (format) { | 12392 switch (format) { |
12385 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: | 12393 case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: |
12386 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: | 12394 case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: |
12387 case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: | 12395 case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: |
12388 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: { | 12396 case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: |
| 12397 case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT: |
| 12398 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: |
| 12399 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: |
| 12400 case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: { |
12389 const int kBlockWidth = 4; | 12401 const int kBlockWidth = 4; |
12390 const int kBlockHeight = 4; | 12402 const int kBlockHeight = 4; |
12391 if ((xoffset % kBlockWidth) || (yoffset % kBlockHeight)) { | 12403 if ((xoffset % kBlockWidth) || (yoffset % kBlockHeight)) { |
12392 LOCAL_SET_GL_ERROR( | 12404 LOCAL_SET_GL_ERROR( |
12393 GL_INVALID_OPERATION, function_name, | 12405 GL_INVALID_OPERATION, function_name, |
12394 "xoffset or yoffset not multiple of 4"); | 12406 "xoffset or yoffset not multiple of 4"); |
12395 return false; | 12407 return false; |
12396 } | 12408 } |
12397 GLsizei tex_width = 0; | 12409 GLsizei tex_width = 0; |
12398 GLsizei tex_height = 0; | 12410 GLsizei tex_height = 0; |
(...skipping 5576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
17975 } | 17987 } |
17976 | 17988 |
17977 // Include the auto-generated part of this file. We split this because it means | 17989 // Include the auto-generated part of this file. We split this because it means |
17978 // we can easily edit the non-auto generated parts right here in this file | 17990 // we can easily edit the non-auto generated parts right here in this file |
17979 // instead of having to edit some template or the code generator. | 17991 // instead of having to edit some template or the code generator. |
17980 #include "base/macros.h" | 17992 #include "base/macros.h" |
17981 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 17993 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
17982 | 17994 |
17983 } // namespace gles2 | 17995 } // namespace gles2 |
17984 } // namespace gpu | 17996 } // namespace gpu |
OLD | NEW |