OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // This file contains the ErrorState class. |
| 6 |
| 7 #ifndef GPU_COMMAND_BUFFER_SERVICE_ERROR_STATE_H_ |
| 8 #define GPU_COMMAND_BUFFER_SERVICE_ERROR_STATE_H_ |
| 9 |
| 10 #include "base/compiler_specific.h" |
| 11 #include "gpu/command_buffer/common/types.h" |
| 12 #include "gpu/gpu_export.h" |
| 13 |
| 14 namespace gpu { |
| 15 namespace gles2 { |
| 16 |
| 17 class Logger; |
| 18 |
| 19 // Use these macro to synthesize GL errors instead of calling the error_state |
| 20 // functions directly as they will propogate the __FILE__ and __LINE__. |
| 21 |
| 22 // Use to synthesize a GL error on the error_state. |
| 23 #define ERRORSTATE_SET_GL_ERROR(error_state, error, function_name, msg) \ |
| 24 error_state->SetGLError(__FILE__, __LINE__, error, function_name, msg) |
| 25 |
| 26 // Use to synthesize an INVALID_ENUM GL error on the error_state. Will attempt |
| 27 // to expand the enum to a string. |
| 28 #define ERRORSTATE_SET_GL_ERROR_INVALID_ENUM( \ |
| 29 error_state, function_name, value, label) \ |
| 30 error_state->SetGLErrorInvalidEnum( \ |
| 31 __FILE__, __LINE__, function_name, value, label) |
| 32 |
| 33 // Use to synthesize a GL error on the error_state for an invalid enum based |
| 34 // parameter. Will attempt to expand the parameter to a string. |
| 35 #define ERRORSTATE_SET_GL_ERROR_INVALID_PARAM( \ |
| 36 error_state, error, function_name, pname, param) \ |
| 37 error_state->SetGLErrorInvalidParam( \ |
| 38 __FILE__, __LINE__, error, function_name, pname, param) |
| 39 |
| 40 // Use to move all pending error to the wrapper so on your next GL call |
| 41 // you can see if that call generates an error. |
| 42 #define ERRORSTATE_COPY_REAL_GL_ERRORS_TO_WRAPPER(error_state, function_name) \ |
| 43 error_state->CopyRealGLErrorsToWrapper(__FILE__, __LINE__, function_name) |
| 44 // Use to look at the real GL error and still pass it on to the user. |
| 45 #define ERRORSTATE_PEEK_GL_ERROR(error_state, function_name) \ |
| 46 error_state->PeekGLError(__FILE__, __LINE__, function_name) |
| 47 // Use to clear all current GL errors. FAILS if there are any. |
| 48 #define ERRORSTATE_CLEAR_REAL_GL_ERRORS(error_state, function_name) \ |
| 49 error_state->ClearRealGLErrors(__FILE__, __LINE__, function_name) |
| 50 |
| 51 |
| 52 class GPU_EXPORT ErrorState { |
| 53 public: |
| 54 virtual ~ErrorState(); |
| 55 |
| 56 static ErrorState* Create(Logger* logger); |
| 57 |
| 58 virtual uint32 GetGLError() = 0; |
| 59 |
| 60 virtual void SetGLError( |
| 61 const char* filename, |
| 62 int line, |
| 63 unsigned int error, |
| 64 const char* function_name, |
| 65 const char* msg) = 0; |
| 66 virtual void SetGLErrorInvalidEnum( |
| 67 const char* filename, |
| 68 int line, |
| 69 const char* function_name, |
| 70 unsigned int value, |
| 71 const char* label) = 0; |
| 72 virtual void SetGLErrorInvalidParam( |
| 73 const char* filename, |
| 74 int line, |
| 75 unsigned int error, |
| 76 const char* function_name, |
| 77 unsigned int pname, |
| 78 int param) = 0; |
| 79 |
| 80 // Gets the GLError and stores it in our wrapper. Effectively |
| 81 // this lets us peek at the error without losing it. |
| 82 virtual unsigned int PeekGLError( |
| 83 const char* filename, int line, const char* function_name) = 0; |
| 84 |
| 85 // Copies the real GL errors to the wrapper. This is so we can |
| 86 // make sure there are no native GL errors before calling some GL function |
| 87 // so that on return we know any error generated was for that specific |
| 88 // command. |
| 89 virtual void CopyRealGLErrorsToWrapper( |
| 90 const char* filename, int line, const char* function_name) = 0; |
| 91 |
| 92 // Clear all real GL errors. This is to prevent the client from seeing any |
| 93 // errors caused by GL calls that it was not responsible for issuing. |
| 94 virtual void ClearRealGLErrors( |
| 95 const char* filename, int line, const char* function_name) = 0; |
| 96 |
| 97 protected: |
| 98 ErrorState(); |
| 99 |
| 100 DISALLOW_COPY_AND_ASSIGN(ErrorState); |
| 101 }; |
| 102 |
| 103 } // namespace gles2 |
| 104 } // namespace gpu |
| 105 |
| 106 #endif // GPU_COMMAND_BUFFER_SERVICE_ERROR_STATE_H_ |
| 107 |
OLD | NEW |