From 2cf04ef11ee63eb778b3fb83b083ff64a96ebf35 Mon Sep 17 00:00:00 2001 From: weiliangc Date: Mon, 24 Nov 2014 09:14:41 -0800 Subject: [PATCH] Iterate through all types of DrawQuad to get largest size 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} --- cc/quads/largest_draw_quad.cc | 53 +++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/cc/quads/largest_draw_quad.cc b/cc/quads/largest_draw_quad.cc index 55fcb22f43d50e..6445204bd192d6 100644 --- a/cc/quads/largest_draw_quad.cc +++ b/cc/quads/largest_draw_quad.cc @@ -6,15 +6,62 @@ #include +#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