| Index: core/cross/command_buffer/states_cb.cc
 | 
| ===================================================================
 | 
| --- core/cross/command_buffer/states_cb.cc	(revision 26886)
 | 
| +++ core/cross/command_buffer/states_cb.cc	(working copy)
 | 
| @@ -42,137 +42,136 @@
 | 
|  namespace o3d {
 | 
|  using command_buffer::CommandBufferEntry;
 | 
|  using command_buffer::CommandBufferHelper;
 | 
| -using command_buffer::GAPIInterface;
 | 
|  
 | 
|  namespace {
 | 
|  
 | 
|  // Converts values meant to represent a Cull Mode to the corresponding
 | 
|  // command-buffer value.
 | 
|  // Default: CULL_NONE.
 | 
| -GAPIInterface::FaceCullMode CullModeToCB(int cull) {
 | 
| +command_buffer::FaceCullMode CullModeToCB(int cull) {
 | 
|    switch (cull) {
 | 
|      default:
 | 
|      case State::CULL_NONE:
 | 
| -      return GAPIInterface::CULL_NONE;
 | 
| +      return command_buffer::kCullNone;
 | 
|      case State::CULL_CW:
 | 
| -      return GAPIInterface::CULL_CW;
 | 
| +      return command_buffer::kCullCW;
 | 
|      case State::CULL_CCW:
 | 
| -      return GAPIInterface::CULL_CCW;
 | 
| +      return command_buffer::kCullCCW;
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  // Converts values meant to represent a Polygon Fill Mode to the corresponding
 | 
|  // command-buffer value.
 | 
| -// Default: POLYGON_MODE_FILL.
 | 
| -GAPIInterface::PolygonMode FillModeToCB(int fill) {
 | 
| +// Default: kPolygonModeFill.
 | 
| +command_buffer::PolygonMode FillModeToCB(int fill) {
 | 
|    switch (fill) {
 | 
|      case State::POINT:
 | 
| -      return GAPIInterface::POLYGON_MODE_POINTS;
 | 
| +      return command_buffer::kPolygonModePoints;
 | 
|      case State::WIREFRAME:
 | 
| -      return GAPIInterface::POLYGON_MODE_LINES;
 | 
| +      return command_buffer::kPolygonModeLines;
 | 
|      default:
 | 
|      case State::SOLID:
 | 
| -      return GAPIInterface::POLYGON_MODE_FILL;
 | 
| +      return command_buffer::kPolygonModeFill;
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  // Converts values meant to represent a Comparison Function to the corresponding
 | 
|  // command-buffer value.
 | 
| -// Default: ALWAYS.
 | 
| -GAPIInterface::Comparison ComparisonToCB(int comparison) {
 | 
| +// Default: kAlways.
 | 
| +command_buffer::Comparison ComparisonToCB(int comparison) {
 | 
|    switch (comparison) {
 | 
|      case State::CMP_NEVER:
 | 
| -      return GAPIInterface::NEVER;
 | 
| +      return command_buffer::kNever;
 | 
|      case State::CMP_LESS:
 | 
| -      return GAPIInterface::LESS;
 | 
| +      return command_buffer::kLess;
 | 
|      case State::CMP_EQUAL:
 | 
| -      return GAPIInterface::EQUAL;
 | 
| +      return command_buffer::kEqual;
 | 
|      case State::CMP_LEQUAL:
 | 
| -      return GAPIInterface::LEQUAL;
 | 
| +      return command_buffer::kLEqual;
 | 
|      case State::CMP_GREATER:
 | 
| -      return GAPIInterface::GREATER;
 | 
| +      return command_buffer::kGreater;
 | 
|      case State::CMP_NOTEQUAL:
 | 
| -      return GAPIInterface::NOT_EQUAL;
 | 
| +      return command_buffer::kNotEqual;
 | 
|      case State::CMP_GEQUAL:
 | 
| -      return GAPIInterface::GEQUAL;
 | 
| +      return command_buffer::kGEqual;
 | 
|      case State::CMP_ALWAYS:
 | 
|      default:
 | 
| -      return GAPIInterface::ALWAYS;
 | 
| +      return command_buffer::kAlways;
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  // Converts values meant to represent a Stencil Operation to the corresponding
 | 
|  // command-buffer value.
 | 
| -// Default: KEEP.
 | 
| -GAPIInterface::StencilOp StencilOpToCB(int op) {
 | 
| +// Default: kKeep.
 | 
| +command_buffer::StencilOp StencilOpToCB(int op) {
 | 
|    switch (op) {
 | 
|      default:
 | 
|      case State::STENCIL_KEEP:
 | 
| -      return GAPIInterface::KEEP;
 | 
| +      return command_buffer::kKeep;
 | 
|      case State::STENCIL_ZERO:
 | 
| -      return GAPIInterface::ZERO;
 | 
| +      return command_buffer::kZero;
 | 
|      case State::STENCIL_REPLACE:
 | 
| -      return GAPIInterface::REPLACE;
 | 
| +      return command_buffer::kReplace;
 | 
|      case State::STENCIL_INCREMENT_SATURATE:
 | 
| -      return GAPIInterface::INC_NO_WRAP;
 | 
| +      return command_buffer::kIncNoWrap;
 | 
|      case State::STENCIL_DECREMENT_SATURATE:
 | 
| -      return GAPIInterface::DEC_NO_WRAP;
 | 
| +      return command_buffer::kDecNoWrap;
 | 
|      case State::STENCIL_INVERT:
 | 
| -      return GAPIInterface::INVERT;
 | 
| +      return command_buffer::kInvert;
 | 
|      case State::STENCIL_INCREMENT:
 | 
| -      return GAPIInterface::INC_WRAP;
 | 
| +      return command_buffer::kIncWrap;
 | 
|      case State::STENCIL_DECREMENT:
 | 
| -      return GAPIInterface::DEC_WRAP;
 | 
| +      return command_buffer::kDecWrap;
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  // Converts values meant to represent a Blending Function to the corresponding
 | 
|  // command-buffer value.
 | 
| -// Default: BLEND_FUNC_ONE.
 | 
| -GAPIInterface::BlendFunc BlendFuncToCB(int func) {
 | 
| +// Default: kBlendFuncOne.
 | 
| +command_buffer::BlendFunc BlendFuncToCB(int func) {
 | 
|    switch (func) {
 | 
|      case State::BLENDFUNC_ZERO:
 | 
| -      return GAPIInterface::BLEND_FUNC_ZERO;
 | 
| +      return command_buffer::kBlendFuncZero;
 | 
|      default:
 | 
|      case State::BLENDFUNC_ONE:
 | 
| -      return GAPIInterface::BLEND_FUNC_ONE;
 | 
| +      return command_buffer::kBlendFuncOne;
 | 
|      case State::BLENDFUNC_SOURCE_COLOR:
 | 
| -      return GAPIInterface::BLEND_FUNC_SRC_COLOR;
 | 
| +      return command_buffer::kBlendFuncSrcColor;
 | 
|      case State::BLENDFUNC_INVERSE_SOURCE_COLOR:
 | 
| -      return GAPIInterface::BLEND_FUNC_INV_SRC_COLOR;
 | 
| +      return command_buffer::kBlendFuncInvSrcColor;
 | 
|      case State::BLENDFUNC_SOURCE_ALPHA:
 | 
| -      return GAPIInterface::BLEND_FUNC_SRC_ALPHA;
 | 
| +      return command_buffer::kBlendFuncSrcAlpha;
 | 
|      case State::BLENDFUNC_INVERSE_SOURCE_ALPHA:
 | 
| -      return GAPIInterface::BLEND_FUNC_INV_SRC_ALPHA;
 | 
| +      return command_buffer::kBlendFuncInvSrcAlpha;
 | 
|      case State::BLENDFUNC_DESTINATION_ALPHA:
 | 
| -      return GAPIInterface::BLEND_FUNC_DST_ALPHA;
 | 
| +      return command_buffer::kBlendFuncDstAlpha;
 | 
|      case State::BLENDFUNC_INVERSE_DESTINATION_ALPHA:
 | 
| -      return GAPIInterface::BLEND_FUNC_INV_DST_ALPHA;
 | 
| +      return command_buffer::kBlendFuncInvDstAlpha;
 | 
|      case State::BLENDFUNC_DESTINATION_COLOR:
 | 
| -      return GAPIInterface::BLEND_FUNC_DST_COLOR;
 | 
| +      return command_buffer::kBlendFuncDstColor;
 | 
|      case State::BLENDFUNC_INVERSE_DESTINATION_COLOR:
 | 
| -      return GAPIInterface::BLEND_FUNC_INV_DST_COLOR;
 | 
| +      return command_buffer::kBlendFuncInvDstColor;
 | 
|      case State::BLENDFUNC_SOURCE_ALPHA_SATUTRATE:
 | 
| -      return GAPIInterface::BLEND_FUNC_SRC_ALPHA_SATUTRATE;
 | 
| +      return command_buffer::kBlendFuncSrcAlphaSaturate;
 | 
|    }
 | 
|  }
 | 
|  
 | 
|  // Converts values meant to represent a Blending Equation to the corresponding
 | 
|  // command-buffer value.
 | 
| -// Default: BLEND_EQ_ADD.
 | 
| -GAPIInterface::BlendEq BlendEqToCB(int eq) {
 | 
| +// Default: kBlendEqAdd.
 | 
| +command_buffer::BlendEq BlendEqToCB(int eq) {
 | 
|    switch (eq) {
 | 
|      default:
 | 
|      case State::BLEND_ADD:
 | 
| -      return GAPIInterface::BLEND_EQ_ADD;
 | 
| +      return command_buffer::kBlendEqAdd;
 | 
|      case State::BLEND_SUBTRACT:
 | 
| -      return GAPIInterface::BLEND_EQ_SUB;
 | 
| +      return command_buffer::kBlendEqSub;
 | 
|      case State::BLEND_REVERSE_SUBTRACT:
 | 
| -      return GAPIInterface::BLEND_EQ_REV_SUB;
 | 
| +      return command_buffer::kBlendEqRevSub;
 | 
|      case State::BLEND_MIN:
 | 
| -      return GAPIInterface::BLEND_EQ_MIN;
 | 
| +      return command_buffer::kBlendEqMin;
 | 
|      case State::BLEND_MAX:
 | 
| -      return GAPIInterface::BLEND_EQ_MAX;
 | 
| +      return command_buffer::kBlendEqMax;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -265,8 +264,9 @@
 | 
|  
 | 
|    virtual void SetStateFromTypedParam(RendererCB* renderer,
 | 
|                                        ParamInteger* param) const {
 | 
| +    using command_buffer::cmd::SetColorWrite;
 | 
|      int mask = param->value();
 | 
| -    o3d::command_buffer::set_color_write::AllColorsMask::Set(value_, mask);
 | 
| +    SetColorWrite::AllColorsMask::Set(value_, mask);
 | 
|      renderer->SetWriteMask(mask);
 | 
|      *dirty_ = true;
 | 
|    }
 | 
| @@ -314,8 +314,8 @@
 | 
|  
 | 
|    virtual void SetStateFromTypedParam(RendererCB* renderer,
 | 
|                                        ParamInteger* param) const {
 | 
| -    using command_buffer::set_polygon_raster::CullMode;
 | 
| -    CullMode::Set(value_, CullModeToCB(param->value()));
 | 
| +    using command_buffer::cmd::SetPolygonRaster;
 | 
| +    SetPolygonRaster::CullMode::Set(value_, CullModeToCB(param->value()));
 | 
|      *dirty_ = true;
 | 
|    }
 | 
|   private:
 | 
| @@ -336,8 +336,8 @@
 | 
|  
 | 
|    virtual void SetStateFromTypedParam(RendererCB* renderer,
 | 
|                                        ParamInteger* param) const {
 | 
| -    using command_buffer::set_polygon_raster::FillMode;
 | 
| -    FillMode::Set(value_, FillModeToCB(param->value()));
 | 
| +    using command_buffer::cmd::SetPolygonRaster;
 | 
| +    SetPolygonRaster::FillMode::Set(value_, FillModeToCB(param->value()));
 | 
|      *dirty_ = true;
 | 
|    }
 | 
|   private:
 | 
| @@ -447,17 +447,17 @@
 | 
|  void RendererCB::StateManager::AddStateHandlers(RendererCB *renderer) {
 | 
|    // Point/Line raster
 | 
|    {
 | 
| -    using command_buffer::set_point_line_raster::LineSmoothEnable;
 | 
| -    using command_buffer::set_point_line_raster::PointSpriteEnable;
 | 
|      bool *dirty = point_line_helper_.dirty_ptr();
 | 
| -    command_buffer::cmd::SetPointLineRaster& cmd =
 | 
| -        point_line_helper_.command();
 | 
| +    using command_buffer::cmd::SetPointLineRaster;
 | 
| +    SetPointLineRaster& cmd = point_line_helper_.command();
 | 
|      renderer->AddStateHandler(
 | 
|          State::kLineSmoothEnableParamName,
 | 
| -        new EnableStateHandler<LineSmoothEnable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<
 | 
| +            SetPointLineRaster::LineSmoothEnable>(&cmd.enables, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kPointSpriteEnableParamName,
 | 
| -        new EnableStateHandler<PointSpriteEnable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<
 | 
| +            SetPointLineRaster::PointSpriteEnable>(&cmd.enables, dirty));
 | 
|      renderer->AddStateHandler(State::kPointSizeParamName,
 | 
|                                new ValueStateHandler<ParamFloat>(
 | 
|                                    &cmd.point_size, dirty));
 | 
| @@ -466,12 +466,12 @@
 | 
|    // Polygon Raster
 | 
|    {
 | 
|      bool *dirty = poly_raster_helper_.dirty_ptr();
 | 
| -    command_buffer::cmd::SetPolygonRaster& cmd =
 | 
| -        poly_raster_helper_.command();
 | 
| +    using command_buffer::cmd::SetPolygonRaster;
 | 
| +    SetPolygonRaster& cmd = poly_raster_helper_.command();
 | 
|      renderer->AddStateHandler(State::kCullModeParamName,
 | 
| -                              new CullModeStateHandler(&cmd.fixme0, dirty));
 | 
| +                              new CullModeStateHandler(&cmd.fill_cull, dirty));
 | 
|      renderer->AddStateHandler(State::kFillModeParamName,
 | 
| -                              new FillModeStateHandler(&cmd.fixme0, dirty));
 | 
| +                              new FillModeStateHandler(&cmd.fill_cull, dirty));
 | 
|    }
 | 
|  
 | 
|    // Polygon Offset
 | 
| @@ -489,16 +489,15 @@
 | 
|  
 | 
|    // Alpha test
 | 
|    {
 | 
| -    using command_buffer::set_alpha_test::Enable;
 | 
| -    using command_buffer::set_alpha_test::Func;
 | 
| -    command_buffer::cmd::SetAlphaTest& cmd = alpha_test_helper_.command();
 | 
| +    using command_buffer::cmd::SetAlphaTest;
 | 
| +    SetAlphaTest& cmd = alpha_test_helper_.command();
 | 
|      bool *dirty = alpha_test_helper_.dirty_ptr();
 | 
|      renderer->AddStateHandler(
 | 
|          State::kAlphaTestEnableParamName,
 | 
| -        new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<SetAlphaTest::Enable>(&cmd.func_enable, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kAlphaComparisonFunctionParamName,
 | 
| -        new ComparisonStateHandler<Func>(&cmd.fixme0, dirty));
 | 
| +        new ComparisonStateHandler<SetAlphaTest::Func>(&cmd.func_enable, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kAlphaReferenceParamName,
 | 
|          new ValueStateHandler<ParamFloat>(&cmd.value, dirty));
 | 
| @@ -506,131 +505,127 @@
 | 
|  
 | 
|    // Depth Test
 | 
|    {
 | 
| -    using command_buffer::set_depth_test::Enable;
 | 
| -    using command_buffer::set_depth_test::WriteEnable;
 | 
| -    using command_buffer::set_depth_test::Func;
 | 
|      bool *dirty = depth_test_helper_.dirty_ptr();
 | 
| -    command_buffer::cmd::SetDepthTest& cmd = depth_test_helper_.command();
 | 
| +    using command_buffer::cmd::SetDepthTest;
 | 
| +    SetDepthTest& cmd = depth_test_helper_.command();
 | 
|      renderer->AddStateHandler(
 | 
|          State::kZWriteEnableParamName,
 | 
| -        new EnableStateHandler<WriteEnable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<SetDepthTest::WriteEnable>(&cmd.func_enable, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kZEnableParamName,
 | 
| -        new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<SetDepthTest::Enable>(&cmd.func_enable, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kZComparisonFunctionParamName,
 | 
| -        new ComparisonStateHandler<Func>(&cmd.fixme0, dirty));
 | 
| +        new ComparisonStateHandler<SetDepthTest::Func>(&cmd.func_enable, dirty));
 | 
|    }
 | 
|  
 | 
|    // Stencil Test
 | 
|    {
 | 
| -    using command_buffer::set_stencil_test::Enable;
 | 
| -    using command_buffer::set_stencil_test::SeparateCCW;
 | 
| -    using command_buffer::set_stencil_test::WriteMask;
 | 
| -    using command_buffer::set_stencil_test::CompareMask;
 | 
| -    using command_buffer::set_stencil_test::ReferenceValue;
 | 
| -    using command_buffer::set_stencil_test::CWFunc;
 | 
| -    using command_buffer::set_stencil_test::CWPassOp;
 | 
| -    using command_buffer::set_stencil_test::CWFailOp;
 | 
| -    using command_buffer::set_stencil_test::CWZFailOp;
 | 
| -    using command_buffer::set_stencil_test::CCWFunc;
 | 
| -    using command_buffer::set_stencil_test::CCWPassOp;
 | 
| -    using command_buffer::set_stencil_test::CCWFailOp;
 | 
| -    using command_buffer::set_stencil_test::CCWZFailOp;
 | 
|      bool *dirty = stencil_test_helper_.dirty_ptr();
 | 
| -    command_buffer::cmd::SetStencilTest& cmd = stencil_test_helper_.command();
 | 
| +    using command_buffer::cmd::SetStencilTest;
 | 
| +    SetStencilTest& cmd = stencil_test_helper_.command();
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilEnableParamName,
 | 
| -        new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<SetStencilTest::Enable>(&cmd.stencil_args0, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kTwoSidedStencilEnableParamName,
 | 
| -        new EnableStateHandler<SeparateCCW>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<
 | 
| +            SetStencilTest::SeparateCCW>(&cmd.stencil_args0, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilReferenceParamName,
 | 
| -        new BitFieldStateHandler<ReferenceValue>(&cmd.fixme0, dirty));
 | 
| +        new BitFieldStateHandler<
 | 
| +            SetStencilTest::ReferenceValue>(&cmd.stencil_args0, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilMaskParamName,
 | 
| -        new BitFieldStateHandler<CompareMask>(&cmd.fixme0, dirty));
 | 
| +        new BitFieldStateHandler<
 | 
| +            SetStencilTest::CompareMask>(&cmd.stencil_args0, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilWriteMaskParamName,
 | 
| -        new BitFieldStateHandler<WriteMask>(&cmd.fixme0, dirty));
 | 
| +        new BitFieldStateHandler<
 | 
| +            SetStencilTest::WriteMask>(&cmd.stencil_args0, dirty));
 | 
|  
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilComparisonFunctionParamName,
 | 
| -        new ComparisonStateHandler<CWFunc>(&cmd.fixme1, dirty));
 | 
| +        new ComparisonStateHandler<
 | 
| +            SetStencilTest::CWFunc>(&cmd.stencil_args1, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilPassOperationParamName,
 | 
| -        new StencilOpStateHandler<CWPassOp>(&cmd.fixme1, dirty));
 | 
| +        new StencilOpStateHandler<
 | 
| +            SetStencilTest::CWPassOp>(&cmd.stencil_args1, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilFailOperationParamName,
 | 
| -        new StencilOpStateHandler<CWFailOp>(&cmd.fixme1, dirty));
 | 
| +        new StencilOpStateHandler<
 | 
| +            SetStencilTest::CWFailOp>(&cmd.stencil_args1, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kStencilZFailOperationParamName,
 | 
| -        new StencilOpStateHandler<CWZFailOp>(&cmd.fixme1, dirty));
 | 
| +        new StencilOpStateHandler<
 | 
| +            SetStencilTest::CWZFailOp>(&cmd.stencil_args1, dirty));
 | 
|  
 | 
|      renderer->AddStateHandler(
 | 
|          State::kCCWStencilComparisonFunctionParamName,
 | 
| -        new ComparisonStateHandler<CCWFunc>(&cmd.fixme1, dirty));
 | 
| +        new ComparisonStateHandler<
 | 
| +            SetStencilTest::CCWFunc>(&cmd.stencil_args1, dirty));
 | 
|  
 | 
|      renderer->AddStateHandler(
 | 
|          State::kCCWStencilPassOperationParamName,
 | 
| -        new StencilOpStateHandler<CCWPassOp>(&cmd.fixme1, dirty));
 | 
| +        new StencilOpStateHandler<
 | 
| +            SetStencilTest::CCWPassOp>(&cmd.stencil_args1, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kCCWStencilFailOperationParamName,
 | 
| -        new StencilOpStateHandler<CCWFailOp>(&cmd.fixme1, dirty));
 | 
| +        new StencilOpStateHandler<
 | 
| +            SetStencilTest::CCWFailOp>(&cmd.stencil_args1, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kCCWStencilZFailOperationParamName,
 | 
| -        new StencilOpStateHandler<CCWZFailOp>(&cmd.fixme1, dirty));
 | 
| +        new StencilOpStateHandler<
 | 
| +            SetStencilTest::CCWZFailOp>(&cmd.stencil_args1, dirty));
 | 
|    }
 | 
|  
 | 
|    // Blending
 | 
|    {
 | 
| -    using command_buffer::set_blending::Enable;
 | 
| -    using command_buffer::set_blending::SeparateAlpha;
 | 
| -    using command_buffer::set_blending::ColorEq;
 | 
| -    using command_buffer::set_blending::ColorSrcFunc;
 | 
| -    using command_buffer::set_blending::ColorDstFunc;
 | 
| -    using command_buffer::set_blending::AlphaEq;
 | 
| -    using command_buffer::set_blending::AlphaSrcFunc;
 | 
| -    using command_buffer::set_blending::AlphaDstFunc;
 | 
|      bool *dirty = blending_helper_.dirty_ptr();
 | 
| -    command_buffer::cmd::SetBlending& cmd = blending_helper_.command();
 | 
| +    using command_buffer::cmd::SetBlending;
 | 
| +    SetBlending& cmd = blending_helper_.command();
 | 
|      renderer->AddStateHandler(
 | 
|          State::kAlphaBlendEnableParamName,
 | 
| -        new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<SetBlending::Enable>(&cmd.blend_settings, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kSeparateAlphaBlendEnableParamName,
 | 
| -        new EnableStateHandler<SeparateAlpha>(&cmd.fixme0, dirty));
 | 
| +        new EnableStateHandler<SetBlending::SeparateAlpha>(&cmd.blend_settings, dirty));
 | 
|  
 | 
|      renderer->AddStateHandler(
 | 
|          State::kSourceBlendFunctionParamName,
 | 
| -        new BlendFuncStateHandler<ColorSrcFunc>(&cmd.fixme0, dirty));
 | 
| +        new BlendFuncStateHandler<
 | 
| +            SetBlending::ColorSrcFunc>(&cmd.blend_settings, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kDestinationBlendFunctionParamName,
 | 
| -        new BlendFuncStateHandler<ColorDstFunc>(&cmd.fixme0, dirty));
 | 
| +        new BlendFuncStateHandler<
 | 
| +            SetBlending::ColorDstFunc>(&cmd.blend_settings, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kBlendEquationParamName,
 | 
| -        new BlendEqStateHandler<ColorEq>(&cmd.fixme0, dirty));
 | 
| +        new BlendEqStateHandler<
 | 
| +            SetBlending::ColorEq>(&cmd.blend_settings, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kSourceBlendAlphaFunctionParamName,
 | 
| -        new BlendFuncStateHandler<AlphaSrcFunc>(&cmd.fixme0, dirty));
 | 
| +        new BlendFuncStateHandler<
 | 
| +            SetBlending::AlphaSrcFunc>(&cmd.blend_settings, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kDestinationBlendAlphaFunctionParamName,
 | 
| -        new BlendFuncStateHandler<AlphaDstFunc>(&cmd.fixme0, dirty));
 | 
| +        new BlendFuncStateHandler<
 | 
| +            SetBlending::AlphaDstFunc>(&cmd.blend_settings, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kBlendAlphaEquationParamName,
 | 
| -        new BlendEqStateHandler<AlphaEq>(&cmd.fixme0, dirty));
 | 
| +        new BlendEqStateHandler<
 | 
| +            SetBlending::AlphaEq>(&cmd.blend_settings, dirty));
 | 
|    }
 | 
|  
 | 
|    // Color Write
 | 
|    {
 | 
| -    using command_buffer::set_color_write::DitherEnable;
 | 
| -    using command_buffer::set_color_write::AllColorsMask;
 | 
|      bool *dirty = color_write_helper_.dirty_ptr();
 | 
| -    command_buffer::cmd::SetColorWrite& cmd = color_write_helper_.command();
 | 
| +    using command_buffer::cmd::SetColorWrite;
 | 
| +    SetColorWrite& cmd = color_write_helper_.command();
 | 
|      renderer->AddStateHandler(
 | 
|          State::kDitherEnableParamName,
 | 
| -        new EnableStateHandler<DitherEnable>(&cmd.flags, dirty));
 | 
| +        new EnableStateHandler<SetColorWrite::DitherEnable>(&cmd.flags, dirty));
 | 
|      renderer->AddStateHandler(
 | 
|          State::kColorWriteEnableParamName,
 | 
|          new ColorWriteStateHandler(&cmd.flags, dirty));
 | 
| 
 |