• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 // Contains various validation functions for the GLES2 service.
6 
7 #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_H_
8 #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_H_
9 
10 #include <algorithm>
11 #include <vector>
12 #define GLES2_GPU_SERVICE 1
13 #include "gpu/command_buffer/common/gles2_cmd_format.h"
14 
15 namespace gpu {
16 namespace gles2 {
17 
18 // ValueValidator returns true if a value is valid.
19 template <typename T>
20 class ValueValidator {
21  public:
ValueValidator()22   ValueValidator() {}
23 
ValueValidator(const T * valid_values,int num_values)24   ValueValidator(const T* valid_values, int num_values) {
25     for (int ii = 0; ii < num_values; ++ii) {
26       AddValue(valid_values[ii]);
27     }
28   }
29 
AddValue(const T value)30   void AddValue(const T value) {
31     if (!IsValid(value)) {
32       valid_values_.push_back(value);
33     }
34   }
35 
IsValid(const T value)36   bool IsValid(const T value) const {
37     return std::find(valid_values_.begin(), valid_values_.end(), value) !=
38            valid_values_.end();
39   }
40 
GetValues()41   const std::vector<T>& GetValues() const {
42     return valid_values_;
43   }
44 
45  private:
46   std::vector<T> valid_values_;
47 };
48 
49 struct Validators {
50   Validators();
51 #include "gpu/command_buffer/service/gles2_cmd_validation_autogen.h"
52 };
53 
54 }  // namespace gles2
55 }  // namespace gpu
56 
57 #endif  // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_H_
58 
59