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

Side by Side Diff: gpu/command_buffer/common/gles2_cmd_utils.cc

Issue 2479513002: Reland of Extend CopyTextureCHROMIUM to more ES 3.0 texture formats. (Closed)
Patch Set: rebase and minor fix for premultiply and un-premultiply alpha Created 4 years, 1 month 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
OLDNEW
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 // This file is here so other GLES2 related files can have a common set of 5 // This file is here so other GLES2 related files can have a common set of
6 // includes where appropriate. 6 // includes where appropriate.
7 7
8 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 8 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
9 9
10 #include <GLES2/gl2.h> 10 #include <GLES2/gl2.h>
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 return 1; 468 return 1;
469 469
470 // bad enum 470 // bad enum
471 default: 471 default:
472 return 0; 472 return 0;
473 } 473 }
474 } 474 }
475 475
476 namespace { 476 namespace {
477 477
478 // Return the number of bytes per element, based on the element type.
479 int BytesPerElement(int type) {
480 switch (type) {
481 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
482 return 8;
483 case GL_FLOAT:
484 case GL_UNSIGNED_INT_24_8_OES:
485 case GL_UNSIGNED_INT:
486 case GL_INT:
487 case GL_UNSIGNED_INT_2_10_10_10_REV:
488 case GL_UNSIGNED_INT_10F_11F_11F_REV:
489 case GL_UNSIGNED_INT_5_9_9_9_REV:
490 return 4;
491 case GL_HALF_FLOAT:
492 case GL_HALF_FLOAT_OES:
493 case GL_UNSIGNED_SHORT:
494 case GL_SHORT:
495 case GL_UNSIGNED_SHORT_5_6_5:
496 case GL_UNSIGNED_SHORT_4_4_4_4:
497 case GL_UNSIGNED_SHORT_5_5_5_1:
498 return 2;
499 case GL_UNSIGNED_BYTE:
500 case GL_BYTE:
501 return 1;
502 default:
503 return 0;
504 }
505 }
506
507 } // anonymous namespace
508
478 // Return the number of elements per group of a specified format. 509 // Return the number of elements per group of a specified format.
479 int ElementsPerGroup(int format, int type) { 510 int GLES2Util::ElementsPerGroup(int format, int type) {
480 switch (type) { 511 switch (type) {
481 case GL_UNSIGNED_SHORT_5_6_5: 512 case GL_UNSIGNED_SHORT_5_6_5:
482 case GL_UNSIGNED_SHORT_4_4_4_4: 513 case GL_UNSIGNED_SHORT_4_4_4_4:
483 case GL_UNSIGNED_SHORT_5_5_5_1: 514 case GL_UNSIGNED_SHORT_5_5_5_1:
484 case GL_UNSIGNED_INT_24_8_OES: 515 case GL_UNSIGNED_INT_24_8_OES:
485 case GL_UNSIGNED_INT_2_10_10_10_REV: 516 case GL_UNSIGNED_INT_2_10_10_10_REV:
486 case GL_UNSIGNED_INT_10F_11F_11F_REV: 517 case GL_UNSIGNED_INT_10F_11F_11F_REV:
487 case GL_UNSIGNED_INT_5_9_9_9_REV: 518 case GL_UNSIGNED_INT_5_9_9_9_REV:
488 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV: 519 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
489 return 1; 520 return 1;
(...skipping 24 matching lines...) Expand all
514 case GL_DEPTH24_STENCIL8_OES: 545 case GL_DEPTH24_STENCIL8_OES:
515 case GL_DEPTH_STENCIL_OES: 546 case GL_DEPTH_STENCIL_OES:
516 case GL_RED_EXT: 547 case GL_RED_EXT:
517 case GL_RED_INTEGER: 548 case GL_RED_INTEGER:
518 return 1; 549 return 1;
519 default: 550 default:
520 return 0; 551 return 0;
521 } 552 }
522 } 553 }
523 554
524 // Return the number of bytes per element, based on the element type.
525 int BytesPerElement(int type) {
526 switch (type) {
527 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
528 return 8;
529 case GL_FLOAT:
530 case GL_UNSIGNED_INT_24_8_OES:
531 case GL_UNSIGNED_INT:
532 case GL_INT:
533 case GL_UNSIGNED_INT_2_10_10_10_REV:
534 case GL_UNSIGNED_INT_10F_11F_11F_REV:
535 case GL_UNSIGNED_INT_5_9_9_9_REV:
536 return 4;
537 case GL_HALF_FLOAT:
538 case GL_HALF_FLOAT_OES:
539 case GL_UNSIGNED_SHORT:
540 case GL_SHORT:
541 case GL_UNSIGNED_SHORT_5_6_5:
542 case GL_UNSIGNED_SHORT_4_4_4_4:
543 case GL_UNSIGNED_SHORT_5_5_5_1:
544 return 2;
545 case GL_UNSIGNED_BYTE:
546 case GL_BYTE:
547 return 1;
548 default:
549 return 0;
550 }
551 }
552
553 } // anonymous namespace
554
555 uint32_t GLES2Util::ComputeImageGroupSize(int format, int type) { 555 uint32_t GLES2Util::ComputeImageGroupSize(int format, int type) {
556 int bytes_per_element = BytesPerElement(type); 556 int bytes_per_element = BytesPerElement(type);
557 DCHECK_GE(8, bytes_per_element); 557 DCHECK_GE(8, bytes_per_element);
558 int elements_per_group = ElementsPerGroup(format, type); 558 int elements_per_group = ElementsPerGroup(format, type);
559 DCHECK_GE(4, elements_per_group); 559 DCHECK_GE(4, elements_per_group);
560 return bytes_per_element * elements_per_group; 560 return bytes_per_element * elements_per_group;
561 } 561 }
562 562
563 bool GLES2Util::ComputeImageRowSizeHelper(int width, 563 bool GLES2Util::ComputeImageRowSizeHelper(int width,
564 uint32_t bytes_per_group, 564 uint32_t bytes_per_group,
(...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after
1945 } 1945 }
1946 1946
1947 return true; 1947 return true;
1948 } 1948 }
1949 1949
1950 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h" 1950 #include "gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h"
1951 1951
1952 } // namespace gles2 1952 } // namespace gles2
1953 } // namespace gpu 1953 } // namespace gpu
1954 1954
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698