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: 22 ValueValidator() {} 23 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 30 void AddValue(const T value) { 31 if (!IsValid(value)) { 32 valid_values_.push_back(value); 33 } 34 } 35 36 bool IsValid(const T value) const { 37 return std::find(valid_values_.begin(), valid_values_.end(), value) != 38 valid_values_.end(); 39 } 40 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