Splitting PixelRoutine into PixelProgram and PixelPipeline
This cl splits PixelRoutine into 2 specialized classes:
PixelProgram and PixelPipeline.
In this cl:
- Moved all specialized behavior of PixelRoutine into the
PixelProgram and PixelPipeline classes.
- Inverted hierarchical dependency between PixelRoutine and
QuadRasterizer. QuadRasterizer is now the base class.
- Added a check to PixelProcessor::routine() to either create
a PixelPipeline object or a PixelProgram object.
- Moved a few interpolation related utility functions from
PixelRoutine down to QuadRasterizer.
- Added Registers hierarchy. PixelProgram specific Registers
and PixelPipeline specific Registers are now mutually
exclusive.
- Made the quad functions virtual
- Added a few virtual functions (setBuiltins, ps, alphaTest,
rasterOperation) for Program/Pipeline specific implementations
Bug 20257503
Change-Id: I6abe536a5521d9842f757a8bbb52e3947e3c9250
Reviewed-on: https://swiftshader-review.googlesource.com/3634
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
14 files changed