| Index: core/cross/command_buffer/states_cb.cc
|
| ===================================================================
|
| --- core/cross/command_buffer/states_cb.cc (revision 26638)
|
| +++ core/cross/command_buffer/states_cb.cc (working copy)
|
| @@ -441,31 +441,6 @@
|
| bool *dirty_;
|
| };
|
|
|
| -// A handler that sets the blending color.
|
| -// Parameters:
|
| -// args: a pointer to the arguments.
|
| -// dirty: a pointer to the dirty bit.
|
| -class BlendColorStateHandler : public TypedStateHandler<ParamFloat4> {
|
| - public:
|
| - BlendColorStateHandler(CommandBufferEntry *args, bool *dirty)
|
| - : args_(args),
|
| - dirty_(dirty) {
|
| - }
|
| -
|
| - virtual void SetStateFromTypedParam(RendererCB* renderer,
|
| - ParamFloat4* param) const {
|
| - Float4 value = param->value();
|
| - args_[0].value_float = value[0];
|
| - args_[1].value_float = value[1];
|
| - args_[2].value_float = value[2];
|
| - args_[3].value_float = value[3];
|
| - *dirty_ = true;
|
| - }
|
| - private:
|
| - CommandBufferEntry *args_;
|
| - bool *dirty_;
|
| -};
|
| -
|
| // Adds all the state handlers for all the states. The list of handlers must
|
| // match in names and types the list in Renderer::AddDefaultStates()
|
| // (in renderer.cc).
|
| @@ -475,52 +450,58 @@
|
| using command_buffer::set_point_line_raster::LineSmoothEnable;
|
| using command_buffer::set_point_line_raster::PointSpriteEnable;
|
| bool *dirty = point_line_helper_.dirty_ptr();
|
| - uint32 *arg0 = &(point_line_helper_.args()[0].value_uint32);
|
| - float *arg1 = &(point_line_helper_.args()[1].value_float);
|
| + command_buffer::cmd::SetPointLineRaster& cmd =
|
| + point_line_helper_.command();
|
| renderer->AddStateHandler(
|
| State::kLineSmoothEnableParamName,
|
| - new EnableStateHandler<LineSmoothEnable>(arg0, dirty));
|
| + new EnableStateHandler<LineSmoothEnable>(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(
|
| State::kPointSpriteEnableParamName,
|
| - new EnableStateHandler<PointSpriteEnable>(arg0, dirty));
|
| + new EnableStateHandler<PointSpriteEnable>(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(State::kPointSizeParamName,
|
| - new ValueStateHandler<ParamFloat>(arg1, dirty));
|
| + new ValueStateHandler<ParamFloat>(
|
| + &cmd.point_size, dirty));
|
| }
|
|
|
| // Polygon Raster
|
| {
|
| bool *dirty = poly_raster_helper_.dirty_ptr();
|
| - uint32 *arg = &(poly_raster_helper_.args()[0].value_uint32);
|
| + command_buffer::cmd::SetPolygonRaster& cmd =
|
| + poly_raster_helper_.command();
|
| renderer->AddStateHandler(State::kCullModeParamName,
|
| - new CullModeStateHandler(arg, dirty));
|
| + new CullModeStateHandler(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(State::kFillModeParamName,
|
| - new FillModeStateHandler(arg, dirty));
|
| + new FillModeStateHandler(&cmd.fixme0, dirty));
|
| }
|
|
|
| // Polygon Offset
|
| {
|
| bool *dirty = poly_offset_helper_.dirty_ptr();
|
| - float *arg0 = &(poly_offset_helper_.args()[0].value_float);
|
| - float *arg1 = &(poly_offset_helper_.args()[1].value_float);
|
| - renderer->AddStateHandler(State::kPolygonOffset1ParamName,
|
| - new ValueStateHandler<ParamFloat>(arg0, dirty));
|
| - renderer->AddStateHandler(State::kPolygonOffset2ParamName,
|
| - new ValueStateHandler<ParamFloat>(arg1, dirty));
|
| + command_buffer::cmd::SetPolygonOffset& cmd =
|
| + poly_offset_helper_.command();
|
| + renderer->AddStateHandler(
|
| + State::kPolygonOffset1ParamName,
|
| + new ValueStateHandler<ParamFloat>(&cmd.slope_factor, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kPolygonOffset2ParamName,
|
| + new ValueStateHandler<ParamFloat>(&cmd.units, dirty));
|
| }
|
|
|
| // 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();
|
| bool *dirty = alpha_test_helper_.dirty_ptr();
|
| - uint32 *arg0 = &(alpha_test_helper_.args()[0].value_uint32);
|
| - float *arg1 = &(alpha_test_helper_.args()[1].value_float);
|
| - renderer->AddStateHandler(State::kAlphaTestEnableParamName,
|
| - new EnableStateHandler<Enable>(arg0, dirty));
|
| - renderer->AddStateHandler(State::kAlphaComparisonFunctionParamName,
|
| - new ComparisonStateHandler<Func>(arg0, dirty));
|
| - renderer->AddStateHandler(State::kAlphaReferenceParamName,
|
| - new ValueStateHandler<ParamFloat>(arg1, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kAlphaTestEnableParamName,
|
| + new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kAlphaComparisonFunctionParamName,
|
| + new ComparisonStateHandler<Func>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kAlphaReferenceParamName,
|
| + new ValueStateHandler<ParamFloat>(&cmd.value, dirty));
|
| }
|
|
|
| // Depth Test
|
| @@ -529,13 +510,16 @@
|
| using command_buffer::set_depth_test::WriteEnable;
|
| using command_buffer::set_depth_test::Func;
|
| bool *dirty = depth_test_helper_.dirty_ptr();
|
| - uint32 *arg = &(depth_test_helper_.args()[0].value_uint32);
|
| - renderer->AddStateHandler(State::kZWriteEnableParamName,
|
| - new EnableStateHandler<WriteEnable>(arg, dirty));
|
| - renderer->AddStateHandler(State::kZEnableParamName,
|
| - new EnableStateHandler<Enable>(arg, dirty));
|
| - renderer->AddStateHandler(State::kZComparisonFunctionParamName,
|
| - new ComparisonStateHandler<Func>(arg, dirty));
|
| + command_buffer::cmd::SetDepthTest& cmd = depth_test_helper_.command();
|
| + renderer->AddStateHandler(
|
| + State::kZWriteEnableParamName,
|
| + new EnableStateHandler<WriteEnable>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kZEnableParamName,
|
| + new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kZComparisonFunctionParamName,
|
| + new ComparisonStateHandler<Func>(&cmd.fixme0, dirty));
|
| }
|
|
|
| // Stencil Test
|
| @@ -554,42 +538,49 @@
|
| using command_buffer::set_stencil_test::CCWFailOp;
|
| using command_buffer::set_stencil_test::CCWZFailOp;
|
| bool *dirty = stencil_test_helper_.dirty_ptr();
|
| - uint32 *arg0 = &(stencil_test_helper_.args()[0].value_uint32);
|
| - uint32 *arg1 = &(stencil_test_helper_.args()[1].value_uint32);
|
| - renderer->AddStateHandler(State::kStencilEnableParamName,
|
| - new EnableStateHandler<Enable>(arg0, dirty));
|
| - renderer->AddStateHandler(State::kTwoSidedStencilEnableParamName,
|
| - new EnableStateHandler<SeparateCCW>(arg0, dirty));
|
| + command_buffer::cmd::SetStencilTest& cmd = stencil_test_helper_.command();
|
| renderer->AddStateHandler(
|
| + State::kStencilEnableParamName,
|
| + new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kTwoSidedStencilEnableParamName,
|
| + new EnableStateHandler<SeparateCCW>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| State::kStencilReferenceParamName,
|
| - new BitFieldStateHandler<ReferenceValue>(arg0, dirty));
|
| + new BitFieldStateHandler<ReferenceValue>(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(
|
| State::kStencilMaskParamName,
|
| - new BitFieldStateHandler<CompareMask>(arg0, dirty));
|
| - renderer->AddStateHandler(State::kStencilWriteMaskParamName,
|
| - new BitFieldStateHandler<WriteMask>(arg0, dirty));
|
| + new BitFieldStateHandler<CompareMask>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kStencilWriteMaskParamName,
|
| + new BitFieldStateHandler<WriteMask>(&cmd.fixme0, dirty));
|
|
|
| - renderer->AddStateHandler(State::kStencilComparisonFunctionParamName,
|
| - new ComparisonStateHandler<CWFunc>(arg1, dirty));
|
| - renderer->AddStateHandler(State::kStencilPassOperationParamName,
|
| - new StencilOpStateHandler<CWPassOp>(arg1, dirty));
|
| - renderer->AddStateHandler(State::kStencilFailOperationParamName,
|
| - new StencilOpStateHandler<CWFailOp>(arg1, dirty));
|
| renderer->AddStateHandler(
|
| + State::kStencilComparisonFunctionParamName,
|
| + new ComparisonStateHandler<CWFunc>(&cmd.fixme1, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kStencilPassOperationParamName,
|
| + new StencilOpStateHandler<CWPassOp>(&cmd.fixme1, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kStencilFailOperationParamName,
|
| + new StencilOpStateHandler<CWFailOp>(&cmd.fixme1, dirty));
|
| + renderer->AddStateHandler(
|
| State::kStencilZFailOperationParamName,
|
| - new StencilOpStateHandler<CWZFailOp>(arg1, dirty));
|
| + new StencilOpStateHandler<CWZFailOp>(&cmd.fixme1, dirty));
|
|
|
| - renderer->AddStateHandler(State::kCCWStencilComparisonFunctionParamName,
|
| - new ComparisonStateHandler<CCWFunc>(arg1, dirty));
|
| renderer->AddStateHandler(
|
| + State::kCCWStencilComparisonFunctionParamName,
|
| + new ComparisonStateHandler<CCWFunc>(&cmd.fixme1, dirty));
|
| +
|
| + renderer->AddStateHandler(
|
| State::kCCWStencilPassOperationParamName,
|
| - new StencilOpStateHandler<CCWPassOp>(arg1, dirty));
|
| + new StencilOpStateHandler<CCWPassOp>(&cmd.fixme1, dirty));
|
| renderer->AddStateHandler(
|
| State::kCCWStencilFailOperationParamName,
|
| - new StencilOpStateHandler<CCWFailOp>(arg1, dirty));
|
| + new StencilOpStateHandler<CCWFailOp>(&cmd.fixme1, dirty));
|
| renderer->AddStateHandler(
|
| State::kCCWStencilZFailOperationParamName,
|
| - new StencilOpStateHandler<CCWZFailOp>(arg1, dirty));
|
| + new StencilOpStateHandler<CCWZFailOp>(&cmd.fixme1, dirty));
|
| }
|
|
|
| // Blending
|
| @@ -603,29 +594,32 @@
|
| using command_buffer::set_blending::AlphaSrcFunc;
|
| using command_buffer::set_blending::AlphaDstFunc;
|
| bool *dirty = blending_helper_.dirty_ptr();
|
| - uint32 *arg = &(blending_helper_.args()[0].value_uint32);
|
| - renderer->AddStateHandler(State::kAlphaBlendEnableParamName,
|
| - new EnableStateHandler<Enable>(arg, dirty));
|
| + command_buffer::cmd::SetBlending& cmd = blending_helper_.command();
|
| renderer->AddStateHandler(
|
| + State::kAlphaBlendEnableParamName,
|
| + new EnableStateHandler<Enable>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| State::kSeparateAlphaBlendEnableParamName,
|
| - new EnableStateHandler<SeparateAlpha>(arg, dirty));
|
| + new EnableStateHandler<SeparateAlpha>(&cmd.fixme0, dirty));
|
|
|
| renderer->AddStateHandler(
|
| State::kSourceBlendFunctionParamName,
|
| - new BlendFuncStateHandler<ColorSrcFunc>(arg, dirty));
|
| + new BlendFuncStateHandler<ColorSrcFunc>(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(
|
| State::kDestinationBlendFunctionParamName,
|
| - new BlendFuncStateHandler<ColorDstFunc>(arg, dirty));
|
| - renderer->AddStateHandler(State::kBlendEquationParamName,
|
| - new BlendEqStateHandler<ColorEq>(arg, dirty));
|
| + new BlendFuncStateHandler<ColorDstFunc>(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(
|
| + State::kBlendEquationParamName,
|
| + new BlendEqStateHandler<ColorEq>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| State::kSourceBlendAlphaFunctionParamName,
|
| - new BlendFuncStateHandler<AlphaSrcFunc>(arg, dirty));
|
| + new BlendFuncStateHandler<AlphaSrcFunc>(&cmd.fixme0, dirty));
|
| renderer->AddStateHandler(
|
| State::kDestinationBlendAlphaFunctionParamName,
|
| - new BlendFuncStateHandler<AlphaDstFunc>(arg, dirty));
|
| - renderer->AddStateHandler(State::kBlendAlphaEquationParamName,
|
| - new BlendEqStateHandler<AlphaEq>(arg, dirty));
|
| + new BlendFuncStateHandler<AlphaDstFunc>(&cmd.fixme0, dirty));
|
| + renderer->AddStateHandler(
|
| + State::kBlendAlphaEquationParamName,
|
| + new BlendEqStateHandler<AlphaEq>(&cmd.fixme0, dirty));
|
| }
|
|
|
| // Color Write
|
| @@ -633,12 +627,13 @@
|
| using command_buffer::set_color_write::DitherEnable;
|
| using command_buffer::set_color_write::AllColorsMask;
|
| bool *dirty = color_write_helper_.dirty_ptr();
|
| - uint32 *arg = &(color_write_helper_.args()[0].value_uint32);
|
| - renderer->AddStateHandler(State::kDitherEnableParamName,
|
| - new EnableStateHandler<DitherEnable>(arg, dirty));
|
| + command_buffer::cmd::SetColorWrite& cmd = color_write_helper_.command();
|
| renderer->AddStateHandler(
|
| + State::kDitherEnableParamName,
|
| + new EnableStateHandler<DitherEnable>(&cmd.flags, dirty));
|
| + renderer->AddStateHandler(
|
| State::kColorWriteEnableParamName,
|
| - new ColorWriteStateHandler(arg, dirty));
|
| + new ColorWriteStateHandler(&cmd.flags, dirty));
|
| }
|
| }
|
|
|
| @@ -651,7 +646,6 @@
|
| stencil_test_helper_.Validate(helper);
|
| color_write_helper_.Validate(helper);
|
| blending_helper_.Validate(helper);
|
| - blending_color_helper_.Validate(helper);
|
| }
|
|
|
| } // namespace o3d
|
|
|