// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CC_OUTPUT_RENDERER_SETTINGS_H_
#define CC_OUTPUT_RENDERER_SETTINGS_H_

#include <stddef.h>

#include "cc/base/cc_export.h"
#include "cc/resources/resource_format.h"

namespace cc {

namespace proto {
class RendererSettings;
}  // namespace proto

class CC_EXPORT RendererSettings {
 public:
  RendererSettings();
  RendererSettings(const RendererSettings& other);
  ~RendererSettings();

  bool allow_antialiasing;
  bool force_antialiasing;
  bool force_blending_with_shaders;
  bool partial_swap_enabled;
  bool finish_rendering_on_resize;
  bool should_clear_root_render_pass;
  bool disable_display_vsync;
  bool release_overlay_resources_on_swap_complete;
  double refresh_rate;
  int highp_threshold_min;
  size_t texture_id_allocation_chunk_size;
  bool use_gpu_memory_buffer_resources;
  ResourceFormat preferred_tile_format;

  void ToProtobuf(proto::RendererSettings* proto) const;
  void FromProtobuf(const proto::RendererSettings& proto);

  bool operator==(const RendererSettings& other) const;
};

}  // namespace cc

#endif  // CC_OUTPUT_RENDERER_SETTINGS_H_
