GL_CALL(LineWidth(1));
// invalid
- fActiveTextureUnitIdx = -1;
+ fHWActiveTextureUnitIdx = -1;
fHWBlendState.invalidate();
void GrGpuGL::setTextureUnit(int unit) {
GrAssert(unit >= 0 && unit < GrDrawState::kNumStages);
- if (fActiveTextureUnitIdx != unit) {
+ if (fHWActiveTextureUnitIdx != unit) {
GL_CALL(ActiveTexture(GR_GL_TEXTURE0 + unit));
- fActiveTextureUnitIdx = unit;
+ fHWActiveTextureUnitIdx = unit;
}
}
void GrGpuGL::setSpareTextureUnit() {
- if (fActiveTextureUnitIdx != (GR_GL_TEXTURE0 + SPARE_TEX_UNIT)) {
+ if (fHWActiveTextureUnitIdx != (GR_GL_TEXTURE0 + SPARE_TEX_UNIT)) {
GL_CALL(ActiveTexture(GR_GL_TEXTURE0 + SPARE_TEX_UNIT));
- fActiveTextureUnitIdx = SPARE_TEX_UNIT;
+ fHWActiveTextureUnitIdx = SPARE_TEX_UNIT;
}
}
bool programUnitTest();
-protected:
-
- enum TriState {
- kNo_TriState,
- kYes_TriState,
- kUnknown_TriState
- };
-
- struct {
- size_t fVertexOffset;
- GrVertexLayout fVertexLayout;
- const GrVertexBuffer* fVertexBuffer;
- const GrIndexBuffer* fIndexBuffer;
- bool fArrayPtrsDirty;
- } fHWGeometryState;
-
- enum UnpremulConversion {
- kUpOnWrite_DownOnRead_UnpremulConversion,
- kDownOnWrite_UpOnRead_UnpremulConversion
- } fUnpremulConversion;
-
- // last scissor / viewport scissor state seen by the GL.
- struct {
- bool fScissorEnabled;
- GrGLIRect fScissorRect;
- GrGLIRect fViewportRect;
- } fHWBounds;
-
- const GrGLCaps& glCaps() const { return fGLContextInfo.caps(); }
+protected:
// GrGpu overrides
virtual void onResetContext() SK_OVERRIDE;
int vertexCount,
int indexCount) SK_OVERRIDE;
+private:
+
+ const GrGLCaps& glCaps() const { return fGLContextInfo.caps(); }
// binds texture unit in GL
void setTextureUnit(int unitIdx);
static bool BlendCoeffReferencesConstant(GrBlendCoeff coeff);
-private:
// for readability of function impls
typedef GrGLProgram::ProgramDesc ProgramDesc;
typedef ProgramDesc::StageDesc StageDesc;
// GL program-related state
ProgramCache* fProgramCache;
CachedData* fProgramData;
+ GrGLProgram fCurrentProgram;
+
+ ///////////////////////////////////////////////////////////////////////////
+ ///@name Caching of GL State
+ ///@{
+ int fHWActiveTextureUnitIdx;
GrGLuint fHWProgramID;
GrColor fHWConstAttribColor;
GrColor fHWConstAttribCoverage;
- GrGLProgram fCurrentProgram;
- int fActiveTextureUnitIdx;
+ // last scissor / viewport scissor state seen by the GL.
+ struct {
+ bool fScissorEnabled;
+ GrGLIRect fScissorRect;
+ GrGLIRect fViewportRect;
+ } fHWBounds;
+
+ enum TriState {
+ kNo_TriState,
+ kYes_TriState,
+ kUnknown_TriState
+ };
+
+ struct {
+ size_t fVertexOffset;
+ GrVertexLayout fVertexLayout;
+ const GrVertexBuffer* fVertexBuffer;
+ const GrIndexBuffer* fIndexBuffer;
+ bool fArrayPtrsDirty;
+ } fHWGeometryState;
struct {
GrBlendCoeff fSrcCoeff;
TriState fHWDitherEnabled;
GrRenderTarget* fHWBoundRenderTarget;
GrTexture* fHWBoundTextures[GrDrawState::kNumStages];
+ ///@}
// we record what stencil format worked last time to hopefully exit early
// from our loop that tries stencil formats and calls check fb status.
int fLastSuccessfulStencilFmtIdx;
+ enum UnpremulConversion {
+ kUpOnWrite_DownOnRead_UnpremulConversion,
+ kDownOnWrite_UpOnRead_UnpremulConversion
+ } fUnpremulConversion;
+
enum CanPreserveUnpremulRoundtrip {
kUnknown_CanPreserveUnpremulRoundtrip,
kNo_CanPreserveUnpremulRoundtrip,
}
void GrGpuGL::DeleteProgram(const GrGLInterface* gl,
- CachedData* programData) {
+ CachedData* programData) {
GR_GL_CALL(gl, DeleteShader(programData->fVShaderID));
if (programData->fGShaderID) {
GR_GL_CALL(gl, DeleteShader(programData->fGShaderID));
#endif
void GrGpuGL::setupGeometry(int* startVertex,
- int* startIndex,
- int vertexCount,
- int indexCount) {
+ int* startIndex,
+ int vertexCount,
+ int indexCount) {
int newColorOffset;
int newCoverageOffset;
}
void GrGpuGL::buildProgram(GrPrimitiveType type,
- BlendOptFlags blendOpts,
- GrBlendCoeff dstCoeff,
- GrCustomStage** customStages) {
+ BlendOptFlags blendOpts,
+ GrBlendCoeff dstCoeff,
+ GrCustomStage** customStages) {
ProgramDesc& desc = fCurrentProgram.fProgramDesc;
const GrDrawState& drawState = this->getDrawState();