aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGpuGL.cpp
diff options
context:
space:
mode:
authorGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-28 21:11:35 +0000
committerGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-08-28 21:11:35 +0000
commitf66018798099750e639a8fa131fece492a050997 (patch)
tree4238c882198f2050a2e2ab270ae0c89dc1d49ed0 /src/gpu/gl/GrGpuGL.cpp
parenta7e483d130a65833e4c0d4abb4c2f13a9ce7703b (diff)
Hide GrDrawTarget::Caps's member vars
Review URL: https://codereview.appspot.com/6499044 git-svn-id: http://skia.googlecode.com/svn/trunk@5328 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu/gl/GrGpuGL.cpp')
-rw-r--r--src/gpu/gl/GrGpuGL.cpp56
1 files changed, 29 insertions, 27 deletions
diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
index 8e6e43c7b5..2af77fa395 100644
--- a/src/gpu/gl/GrGpuGL.cpp
+++ b/src/gpu/gl/GrGpuGL.cpp
@@ -211,13 +211,15 @@ void GrGpuGL::initCaps() {
GR_GL_GetIntegerv(gl, GR_GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureUnits);
GrAssert(maxTextureUnits > GrDrawState::kNumStages);
+ CapsInternals* caps = this->capsInternals();
+
GrGLint numFormats;
GR_GL_GetIntegerv(gl, GR_GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numFormats);
SkAutoSTMalloc<10, GrGLint> formats(numFormats);
GR_GL_GetIntegerv(gl, GR_GL_COMPRESSED_TEXTURE_FORMATS, formats);
for (int i = 0; i < numFormats; ++i) {
if (formats[i] == GR_GL_PALETTE8_RGBA8) {
- fCaps.f8BitPaletteSupport = true;
+ caps->f8BitPaletteSupport = true;
break;
}
}
@@ -226,59 +228,59 @@ void GrGpuGL::initCaps() {
// we could also look for GL_ATI_separate_stencil extension or
// GL_EXT_stencil_two_side but they use different function signatures
// than GL2.0+ (and than each other).
- fCaps.fTwoSidedStencilSupport = (this->glVersion() >= GR_GL_VER(2,0));
+ caps->fTwoSidedStencilSupport = (this->glVersion() >= GR_GL_VER(2,0));
// supported on GL 1.4 and higher or by extension
- fCaps.fStencilWrapOpsSupport = (this->glVersion() >= GR_GL_VER(1,4)) ||
+ caps->fStencilWrapOpsSupport = (this->glVersion() >= GR_GL_VER(1,4)) ||
this->hasExtension("GL_EXT_stencil_wrap");
} else {
// ES 2 has two sided stencil and stencil wrap
- fCaps.fTwoSidedStencilSupport = true;
- fCaps.fStencilWrapOpsSupport = true;
+ caps->fTwoSidedStencilSupport = true;
+ caps->fStencilWrapOpsSupport = true;
}
if (kDesktop_GrGLBinding == this->glBinding()) {
- fCaps.fBufferLockSupport = true; // we require VBO support and the desktop VBO
+ caps->fBufferLockSupport = true; // we require VBO support and the desktop VBO
// extension includes glMapBuffer.
} else {
- fCaps.fBufferLockSupport = this->hasExtension("GL_OES_mapbuffer");
+ caps->fBufferLockSupport = this->hasExtension("GL_OES_mapbuffer");
}
if (kDesktop_GrGLBinding == this->glBinding()) {
if (this->glVersion() >= GR_GL_VER(2,0) ||
this->hasExtension("GL_ARB_texture_non_power_of_two")) {
- fCaps.fNPOTTextureTileSupport = true;
+ caps->fNPOTTextureTileSupport = true;
} else {
- fCaps.fNPOTTextureTileSupport = false;
+ caps->fNPOTTextureTileSupport = false;
}
} else {
// Unextended ES2 supports NPOT textures with clamp_to_edge and non-mip filters only
- fCaps.fNPOTTextureTileSupport = this->hasExtension("GL_OES_texture_npot");
+ caps->fNPOTTextureTileSupport = this->hasExtension("GL_OES_texture_npot");
}
- fCaps.fHWAALineSupport = (kDesktop_GrGLBinding == this->glBinding());
+ caps->fHWAALineSupport = (kDesktop_GrGLBinding == this->glBinding());
- GR_GL_GetIntegerv(gl, GR_GL_MAX_TEXTURE_SIZE, &fCaps.fMaxTextureSize);
- GR_GL_GetIntegerv(gl, GR_GL_MAX_RENDERBUFFER_SIZE, &fCaps.fMaxRenderTargetSize);
+ GR_GL_GetIntegerv(gl, GR_GL_MAX_TEXTURE_SIZE, &caps->fMaxTextureSize);
+ GR_GL_GetIntegerv(gl, GR_GL_MAX_RENDERBUFFER_SIZE, &caps->fMaxRenderTargetSize);
// Our render targets are always created with textures as the color
// attachment, hence this min:
- fCaps.fMaxRenderTargetSize = GrMin(fCaps.fMaxTextureSize, fCaps.fMaxRenderTargetSize);
+ caps->fMaxRenderTargetSize = GrMin(caps->fMaxTextureSize, caps->fMaxRenderTargetSize);
- fCaps.fFSAASupport = GrGLCaps::kNone_MSFBOType != this->glCaps().msFBOType();
- fCaps.fPathStencilingSupport = GR_GL_USE_NV_PATH_RENDERING &&
+ caps->fFSAASupport = GrGLCaps::kNone_MSFBOType != this->glCaps().msFBOType();
+ caps->fPathStencilingSupport = GR_GL_USE_NV_PATH_RENDERING &&
this->hasExtension("GL_NV_path_rendering");
// Enable supported shader-related caps
if (kDesktop_GrGLBinding == this->glBinding()) {
- fCaps.fDualSourceBlendingSupport =
+ caps->fDualSourceBlendingSupport =
this->glVersion() >= GR_GL_VER(3,3) ||
this->hasExtension("GL_ARB_blend_func_extended");
- fCaps.fShaderDerivativeSupport = true;
+ caps->fShaderDerivativeSupport = true;
// we don't support GL_ARB_geometry_shader4, just GL 3.2+ GS
- fCaps.fGeometryShaderSupport =
+ caps->fGeometryShaderSupport =
this->glVersion() >= GR_GL_VER(3,2) &&
this->glslGeneration() >= k150_GrGLSLGeneration;
} else {
- fCaps.fShaderDerivativeSupport =
+ caps->fShaderDerivativeSupport =
this->hasExtension("GL_OES_standard_derivatives");
}
}
@@ -426,7 +428,7 @@ void GrGpuGL::onResetContext() {
fHWBoundRenderTarget = NULL;
fHWPathMatrixState.invalidate();
- if (fCaps.fPathStencilingSupport) {
+ if (fCaps.pathStencilingSupport()) {
// we don't use the model view matrix.
GL_CALL(MatrixMode(GR_GL_MODELVIEW));
GL_CALL(LoadIdentity());
@@ -956,8 +958,8 @@ GrTexture* GrGpuGL::onCreateTexture(const GrTextureDesc& desc,
}
if (renderTarget) {
- if (glTexDesc.fWidth > caps.fMaxRenderTargetSize ||
- glTexDesc.fHeight > caps.fMaxRenderTargetSize) {
+ if (glTexDesc.fWidth > caps.maxRenderTargetSize() ||
+ glTexDesc.fHeight > caps.maxRenderTargetSize()) {
return return_null_texture();
}
}
@@ -1243,7 +1245,7 @@ GrIndexBuffer* GrGpuGL::onCreateIndexBuffer(uint32_t size, bool dynamic) {
}
GrPath* GrGpuGL::onCreatePath(const SkPath& inPath) {
- GrAssert(fCaps.fPathStencilingSupport);
+ GrAssert(fCaps.pathStencilingSupport());
return SkNEW_ARGS(GrGLPath, (this, inPath));
}
@@ -1686,7 +1688,7 @@ void GrGpuGL::setStencilPathSettings(const GrPath&,
}
void GrGpuGL::onGpuStencilPath(const GrPath* path, GrPathFill fill) {
- GrAssert(fCaps.fPathStencilingSupport);
+ GrAssert(fCaps.pathStencilingSupport());
GrGLuint id = static_cast<const GrGLPath*>(path)->pathID();
GrDrawState* drawState = this->drawState();
@@ -1871,7 +1873,7 @@ void GrGpuGL::flushStencil(DrawType type) {
}
}
if (!fStencilSettings.isDisabled()) {
- if (this->getCaps().fTwoSidedStencilSupport) {
+ if (this->getCaps().twoSidedStencilSupport()) {
set_gl_stencil(this->glInterface(),
fStencilSettings,
GR_GL_FRONT,
@@ -2284,7 +2286,7 @@ bool GrGpuGL::configToGLFormats(GrPixelConfig config,
*externalType = GR_GL_UNSIGNED_SHORT_4_4_4_4;
break;
case kIndex_8_GrPixelConfig:
- if (this->getCaps().f8BitPaletteSupport) {
+ if (this->getCaps().eightBitPaletteSupport()) {
*internalFormat = GR_GL_PALETTE8_RGBA8;
// glCompressedTexImage doesn't take external params
*externalFormat = GR_GL_PALETTE8_RGBA8;