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

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

Issue 14308014: Clean up of GLES2 Command Decoder by moving some of the error state into a separate class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed the remaining tests. Added mock ErrorState. Created 7 years, 8 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
(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 // TODO: Look into the current_decoder_error_ in gles2_cmd_decoder.cc.
52 // Should it also be moved into here?
53
54 class GPU_EXPORT ErrorState {
55 public:
56 virtual ~ErrorState();
57
58 // TODO - sanely separate setters from getters.
59 // TODO - make some things const.
60 virtual uint32 GetGLError() = 0;
61
62 virtual void SetGLError(
63 const char* filename,
64 int line,
65 unsigned int error,
66 const char* function_name,
67 const char* msg) = 0;
68 virtual void SetGLErrorInvalidEnum(
69 const char* filename,
70 int line,
71 const char* function_name,
72 unsigned int value,
73 const char* label) = 0;
74 virtual void SetGLErrorInvalidParam(
75 const char* filename,
76 int line,
77 unsigned int error,
78 const char* function_name,
79 unsigned int pname,
80 int param) = 0;
81
82 // Gets the GLError and stores it in our wrapper. Effectively
83 // this lets us peek at the error without losing it.
84 virtual unsigned int PeekGLError(
85 const char* filename, int line, const char* function_name) = 0;
86
87 // Copies the real GL errors to the wrapper. This is so we can
88 // make sure there are no native GL errors before calling some GL function
89 // so that on return we know any error generated was for that specific
90 // command.
91 virtual void CopyRealGLErrorsToWrapper(
92 const char* filename, int line, const char* function_name) = 0;
93
94 // Clear all real GL errors. This is to prevent the client from seeing any
95 // errors caused by GL calls that it was not responsible for issuing.
96 virtual void ClearRealGLErrors(
97 const char* filename, int line, const char* function_name) = 0;
98
99 protected:
100 ErrorState();
101
102 DISALLOW_COPY_AND_ASSIGN(ErrorState);
103 };
104
105 class ErrorStateImpl : public ErrorState {
dsinclair 2013/04/17 00:39:09 Does this need to be in the public header or can i
kloveless 2013/04/17 14:58:01 Done.
106 public:
107 explicit ErrorStateImpl(Logger* logger);
108 virtual ~ErrorStateImpl();
109
110 virtual uint32 GetGLError() OVERRIDE;
111
112 virtual void SetGLError(
113 const char* filename,
114 int line,
115 unsigned int error,
116 const char* function_name,
117 const char* msg) OVERRIDE;
118 virtual void SetGLErrorInvalidEnum(
119 const char* filename,
120 int line,
121 const char* function_name,
122 unsigned int value,
123 const char* label) OVERRIDE;
124 virtual void SetGLErrorInvalidParam(
125 const char* filename,
126 int line,
127 unsigned int error,
128 const char* function_name,
129 unsigned int pname,
130 int param) OVERRIDE;
131
132 virtual unsigned int PeekGLError(
133 const char* filename, int line, const char* function_name) OVERRIDE;
134
135 virtual void CopyRealGLErrorsToWrapper(
136 const char* filename, int line, const char* function_name) OVERRIDE;
137
138 virtual void ClearRealGLErrors(
139 const char* filename, int line, const char* function_name) OVERRIDE;
140
141 private:
142 // The last error message set.
143 std::string last_error_;
144 // Current GL error bits.
145 uint32 error_bits_;
146
147 Logger* logger_;
148
149 DISALLOW_COPY_AND_ASSIGN(ErrorStateImpl);
150 };
151
152 } // namespace gles2
153 } // namespace gpu
154
155 #endif // GPU_COMMAND_BUFFER_SERVICE_ERROR_STATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698