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

Side by Side Diff: gpu/command_buffer/service/gl_stream_texture_image.h

Issue 1818073002: Always apply UniformMatrix4fvStreamTextureMatrixCHROMIUM matrix argument. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase [If you wait by the river long enough, the bodies of your gyp files will float by] Created 4 years, 4 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef GPU_COMMAND_BUFFER_SERVICE_GL_STREAM_TEXTURE_IMAGE_H_ 5 #ifndef GPU_COMMAND_BUFFER_SERVICE_GL_STREAM_TEXTURE_IMAGE_H_
6 #define GPU_COMMAND_BUFFER_SERVICE_GL_STREAM_TEXTURE_IMAGE_H_ 6 #define GPU_COMMAND_BUFFER_SERVICE_GL_STREAM_TEXTURE_IMAGE_H_
7 7
8 #include "gpu/gpu_export.h" 8 #include "gpu/gpu_export.h"
9 #include "ui/gl/gl_image.h" 9 #include "ui/gl/gl_image.h"
10 10
11 namespace gpu { 11 namespace gpu {
12 namespace gles2 { 12 namespace gles2 {
13 13
14 // Specialization of GLImage that allows us to support (stream) textures 14 // Specialization of GLImage that allows us to support (stream) textures
15 // that supply a texture matrix. 15 // that supply a texture matrix.
16 class GPU_EXPORT GLStreamTextureImage : public gl::GLImage { 16 class GPU_EXPORT GLStreamTextureImage : public gl::GLImage {
17 public: 17 public:
18 GLStreamTextureImage() {} 18 GLStreamTextureImage() {}
19 19
20 // Get the matrix. 20 // Get the matrix.
21 // Copy the texture matrix for this image into |matrix|. 21 // Copy the texture matrix for this image into |matrix|.
22 // Subclasses must return a matrix appropriate for a coordinate system where 22 // Subclasses must return a matrix appropriate for a coordinate system where
23 // UV=(0,0) corresponds to the bottom left corner of the image. 23 // UV=(0,0) corresponds to the top left corner of the image.
24 virtual void GetTextureMatrix(float matrix[16]) = 0; 24 virtual void GetTextureMatrix(float matrix[16]) = 0;
25 25
26 // Copy the texture matrix for this image into |matrix|, returning a matrix
27 // for which UV=(0,0) corresponds to the top left of corner of the image,
28 // which is what Chromium generally expects.
29 void GetFlippedTextureMatrix(float matrix[16]) {
30 GetTextureMatrix(matrix);
31 matrix[13] += matrix[5];
32 matrix[5] = -matrix[5];
33 }
34
35 void Flush() override {} 26 void Flush() override {}
36 27
37 protected: 28 protected:
38 ~GLStreamTextureImage() override {} 29 ~GLStreamTextureImage() override {}
39 30
31 // Convenience function for subclasses that deal with SurfaceTextures, whose
32 // coordinate system has (0,0) at the bottom left of the image.
33 // [ a e i m ] [ 1 0 0 0 ] [ a -e i m+e ]
34 // [ b f j n ] [ 0 -1 0 1 ] = [ b -f j n+f ]
35 // [ c g k o ] [ 0 0 1 0 ] [ c -g k o+g ]
36 // [ d h l p ] [ 0 0 0 1 ] [ d -h l p+h ]
37 static void YInvertMatrix(float matrix[16]) {
38 for (int i = 0; i < 4; ++i) {
39 matrix[i + 12] += matrix[i + 4];
40 matrix[i + 4] = -matrix[i + 4];
41 }
42 }
43
40 private: 44 private:
41 DISALLOW_COPY_AND_ASSIGN(GLStreamTextureImage); 45 DISALLOW_COPY_AND_ASSIGN(GLStreamTextureImage);
42 }; 46 };
43 47
44 } // namespace gles2 48 } // namespace gles2
45 } // namespace gpu 49 } // namespace gpu
46 50
47 #endif // GPU_COMMAND_BUFFER_SERVICE_GL_STREAM_TEXTURE_IMAGE_H_ 51 #endif // GPU_COMMAND_BUFFER_SERVICE_GL_STREAM_TEXTURE_IMAGE_H_
OLDNEW
« no previous file with comments | « gpu/command_buffer/common/gles2_cmd_format_autogen.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698