• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  ** Copyright 2011, The Android Open Source Project
3  **
4  ** Licensed under the Apache License, Version 2.0 (the "License");
5  ** you may not use this file except in compliance with the License.
6  ** You may obtain a copy of the License at
7  **
8  **     http://www.apache.org/licenses/LICENSE-2.0
9  **
10  ** Unless required by applicable law or agreed to in writing, software
11  ** distributed under the License is distributed on an "AS IS" BASIS,
12  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  ** See the License for the specific language governing permissions and
14  ** limitations under the License.
15  */
16 
17 #define EXTEND_Debug_glCopyTexImage2D \
18     DbgContext * const dbg = getDbgContextThreadSpecific(); \
19     void * readData = dbg->GetReadPixelsBuffer(4 * width * height); \
20     /* pick easy format for client to convert */ \
21     dbg->hooks->gl.glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, readData); \
22     dbg->CompressReadPixelBuffer(msg.mutable_data()); \
23     msg.set_data_type(msg.ReferencedImage); \
24     msg.set_pixel_format(GL_RGBA); \
25     msg.set_pixel_type(GL_UNSIGNED_BYTE);
26 
27 #define EXTEND_Debug_glCopyTexSubImage2D EXTEND_Debug_glCopyTexImage2D
28 
29 #define EXTEND_AFTER_CALL_Debug_glReadPixels \
30     { \
31         DbgContext * const dbg = getDbgContextThreadSpecific(); \
32         if (dbg->IsReadPixelBuffer(pixels)) { \
33             dbg->CompressReadPixelBuffer(msg.mutable_data()); \
34             msg.set_data_type(msg.ReferencedImage); \
35         } else { \
36             const unsigned int size = width * height * GetBytesPerPixel(format, type); \
37             dbg->Compress(pixels, size, msg.mutable_data()); \
38             msg.set_data_type(msg.NonreferencedImage); \
39         } \
40     }
41 
42 #define EXTEND_Debug_glShaderSource \
43     std::string * const data = msg.mutable_data(); \
44     for (unsigned i = 0; i < count; i++) \
45         if (!length || length[i] < 0) \
46             data->append(string[i]); \
47         else \
48             data->append(string[i], length[i]);
49 
50 #define EXTEND_Debug_glTexImage2D \
51     if (pixels) { \
52         DbgContext * const dbg = getDbgContextThreadSpecific(); \
53         const unsigned size = GetBytesPerPixel(format, type) * width * height; \
54         assert(0 < size); \
55         dbg->Compress(pixels, size, msg.mutable_data()); \
56     }
57 
58 #define EXTEND_Debug_glTexSubImage2D EXTEND_Debug_glTexImage2D
59