Skip to content

Commit

Permalink
Iterate through all types of DrawQuad to get largest size
Browse files Browse the repository at this point in the history
Add logic to go through all types of DrawQuad to get largest size.

Review URL: https://codereview.chromium.org/751563004

Cr-Commit-Position: refs/heads/master@{#305437}
  • Loading branch information
weiliangc authored and Commit bot committed Nov 24, 2014
1 parent 4bd9cbf commit 2cf04ef
Showing 1 changed file with 50 additions and 3 deletions.
53 changes: 50 additions & 3 deletions cc/quads/largest_draw_quad.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,62 @@

#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/picture_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() {
// The largest quad is either a RenderPassDrawQuad or a StreamVideoDrawQuad
// depends on hardware structure.
return std::max(sizeof(RenderPassDrawQuad), sizeof(StreamVideoDrawQuad));
// 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.
COMPILE_ASSERT(sizeof(CheckerboardDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. CheckerboardDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(DebugBorderDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. DebugBorderDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(IOSurfaceDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. IOSurfaceDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(PictureDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. PictureDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(TextureDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. TextureDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(SolidColorDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. SolidColorDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(SurfaceDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. SurfaceDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(TileDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. TileDrawQuad is "
"currently largest.");
COMPILE_ASSERT(sizeof(YUVVideoDrawQuad) <= kLargestDrawQuadSize,
"Largest Draw Quad size needs update. YUVVideoDrawQuad is "
"currently largest.");

return kLargestDrawQuadSize;
}

} // namespace cc

0 comments on commit 2cf04ef

Please sign in to comment.