// 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.

#include "cc/quads/largest_draw_quad.h"

#include <algorithm>

#include "cc/quads/checkerboard_draw_quad.h"
#include "cc/quads/debug_border_draw_quad.h"
#include "cc/quads/io_surface_draw_quad.h"
#include "cc/quads/render_pass_draw_quad.h"
#include "cc/quads/solid_color_draw_quad.h"
#include "cc/quads/stream_video_draw_quad.h"
#include "cc/quads/surface_draw_quad.h"
#include "cc/quads/texture_draw_quad.h"
#include "cc/quads/tile_draw_quad.h"
#include "cc/quads/yuv_video_draw_quad.h"

namespace {
const size_t kLargestDrawQuadSize =
    sizeof(cc::RenderPassDrawQuad) > sizeof(cc::StreamVideoDrawQuad)
        ? sizeof(cc::RenderPassDrawQuad)
        : sizeof(cc::StreamVideoDrawQuad);
}  // namespace

namespace cc {

size_t LargestDrawQuadSize() {
  // Currently the largest quad is either a RenderPassDrawQuad or a
  // StreamVideoDrawQuad depends on hardware structure.

  // Use compile assert to make sure largest is actually larger than all other
  // type of draw quads.
  static_assert(sizeof(CheckerboardDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. CheckerboardDrawQuad is "
                "currently largest.");
  static_assert(sizeof(DebugBorderDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. DebugBorderDrawQuad is "
                "currently largest.");
  static_assert(sizeof(IOSurfaceDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. IOSurfaceDrawQuad is "
                "currently largest.");
  static_assert(sizeof(TextureDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. TextureDrawQuad is "
                "currently largest.");
  static_assert(sizeof(SolidColorDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. SolidColorDrawQuad is "
                "currently largest.");
  static_assert(sizeof(SurfaceDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. SurfaceDrawQuad is "
                "currently largest.");
  static_assert(sizeof(TileDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. TileDrawQuad is "
                "currently largest.");
  static_assert(sizeof(YUVVideoDrawQuad) <= kLargestDrawQuadSize,
                "Largest Draw Quad size needs update. YUVVideoDrawQuad is "
                "currently largest.");

  return kLargestDrawQuadSize;
}

}  // namespace cc
