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

Side by Side Diff: cc/raster/texture_compressor_etc1_sse.cc

Issue 2932053002: Use C++11 alignment primitives (Closed)
Patch Set: Fix merge Created 3 years, 6 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 | « cc/raster/texture_compressor_etc1.h ('k') | components/tracing/core/proto_zero_message.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "cc/raster/texture_compressor_etc1_sse.h" 5 #include "cc/raster/texture_compressor_etc1_sse.h"
6 6
7 #include <emmintrin.h> 7 #include <emmintrin.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 void TextureCompressorETC1SSE::Compress(const uint8_t* src, 783 void TextureCompressorETC1SSE::Compress(const uint8_t* src,
784 uint8_t* dst, 784 uint8_t* dst,
785 int width, 785 int width,
786 int height, 786 int height,
787 Quality quality) { 787 Quality quality) {
788 DCHECK_GE(width, 4); 788 DCHECK_GE(width, 4);
789 DCHECK_EQ((width & 3), 0); 789 DCHECK_EQ((width & 3), 0);
790 DCHECK_GE(height, 4); 790 DCHECK_GE(height, 4);
791 DCHECK_EQ((height & 3), 0); 791 DCHECK_EQ((height & 3), 0);
792 792
793 ALIGNAS(16) uint8_t block[64]; 793 alignas(16) uint8_t block[64];
794 __m128i packed[4]; 794 __m128i packed[4];
795 __m128i red[4], green[4], blue[4], alpha[4]; 795 __m128i red[4], green[4], blue[4], alpha[4];
796 __sse_data data; 796 __sse_data data;
797 797
798 for (int y = 0; y < height; y += 4, src += width * 4 * 4) { 798 for (int y = 0; y < height; y += 4, src += width * 4 * 4) {
799 for (int x = 0; x < width; x += 4, dst += 8) { 799 for (int x = 0; x < width; x += 4, dst += 8) {
800 ExtractBlock(block, src + x * 4, width); 800 ExtractBlock(block, src + x * 4, width);
801 if (TransposeBlock(block, packed) == false) { 801 if (TransposeBlock(block, packed) == false) {
802 CompressSolid(dst, block); 802 CompressSolid(dst, block);
803 } else { 803 } else {
804 UnpackBlock(packed, blue, green, red, alpha); 804 UnpackBlock(packed, blue, green, red, alpha);
805 805
806 data.block = block; 806 data.block = block;
807 data.packed = packed; 807 data.packed = packed;
808 data.red = red; 808 data.red = red;
809 data.blue = blue; 809 data.blue = blue;
810 data.green = green; 810 data.green = green;
811 811
812 CompressBlock(dst, &data); 812 CompressBlock(dst, &data);
813 } 813 }
814 } 814 }
815 } 815 }
816 } 816 }
817 817
818 } // namespace cc 818 } // namespace cc
OLDNEW
« no previous file with comments | « cc/raster/texture_compressor_etc1.h ('k') | components/tracing/core/proto_zero_message.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698