aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar jvanverth <jvanverth@google.com>2014-12-18 05:44:55 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-12-18 05:44:55 -0800
commit1334c21eee8c5b0b216895934e7a8e1c08c6f510 (patch)
tree94cf6ffa8031088dda52b3ba65aae21d327805da /src/gpu
parenteacaa2819d04fc5807562d497215a0f6aca67d62 (diff)
One more pass at getting half float texture configs correct.
Added in check for sized internal format. Made choice between RED and ALPHA orthogonal to HALF_FLOAT and HALF_FLOAT_OES. Enabled rendertarget support on ES 2.0. Review URL: https://codereview.chromium.org/805033002
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/gl/GrGLCaps.cpp19
-rw-r--r--src/gpu/gl/GrGpuGL.cpp23
2 files changed, 28 insertions, 14 deletions
diff --git a/src/gpu/gl/GrGLCaps.cpp b/src/gpu/gl/GrGLCaps.cpp
index c1eb6e10e2..cfb9558c76 100644
--- a/src/gpu/gl/GrGLCaps.cpp
+++ b/src/gpu/gl/GrGLCaps.cpp
@@ -497,10 +497,17 @@ void GrGLCaps::initConfigRenderableTable(const GrGLContextInfo& ctxInfo) {
if (kGL_GrGLStandard == standard) {
fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true;
fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = true;
+ } else if (ctxInfo.version() >= GR_GL_VER(3,0)) {
+ fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true;
+ // for now we don't support floating point MSAA on ES
+ fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false;
} else {
- // in theory, check for "GL_EXT_color_buffer_half_float"
- // for now we don't support half float alpha render target on ES
- fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = false;
+ if (ctxInfo.hasExtension("GL_EXT_color_buffer_half_float") && fTextureRedSupport) {
+ fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = true;
+ } else {
+ fConfigRenderSupport[kAlpha_half_GrPixelConfig][kNo_MSAA] = false;
+ }
+ // for now we don't support floating point MSAA on ES
fConfigRenderSupport[kAlpha_half_GrPixelConfig][kYes_MSAA] = false;
}
}
@@ -649,10 +656,10 @@ void GrGLCaps::initConfigTexturableTable(const GrGLContextInfo& ctxInfo, const G
bool hasHalfFPTextures = version >= GR_GL_VER(3, 1);
if (!hasHalfFPTextures) {
hasHalfFPTextures = ctxInfo.hasExtension("GL_ARB_texture_float") ||
- (ctxInfo.hasExtension("GL_OES_texture_half_float_linear") &&
- ctxInfo.hasExtension("GL_OES_texture_half_float"));
+ (ctxInfo.hasExtension("GL_OES_texture_half_float_linear") &&
+ ctxInfo.hasExtension("GL_OES_texture_half_float"));
}
- fConfigTextureSupport[kAlpha_half_GrPixelConfig] = hasHalfFPTextures && fTextureRedSupport;
+ fConfigTextureSupport[kAlpha_half_GrPixelConfig] = hasHalfFPTextures;
}
bool GrGLCaps::doReadPixelsSupported(const GrGLInterface* intf,
diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
index 92b00c3f5c..5987c7000f 100644
--- a/src/gpu/gl/GrGpuGL.cpp
+++ b/src/gpu/gl/GrGpuGL.cpp
@@ -2386,18 +2386,25 @@ bool GrGLGpu::configToGLFormats(GrPixelConfig config,
break;
case kAlpha_half_GrPixelConfig:
- if (kGLES_GrGLStandard == this->glStandard() && this->glVersion() < GR_GL_VER(3, 1)) {
- *internalFormat = GR_GL_ALPHA;
- *externalFormat = GR_GL_ALPHA;
- *externalType = GR_GL_HALF_FLOAT_OES;
- } else if (this->glCaps().textureRedSupport()) {
- *internalFormat = GR_GL_R16F;
+ if (this->glCaps().textureRedSupport()) {
+ if (getSizedInternalFormat) {
+ *internalFormat = GR_GL_R16F;
+ } else {
+ *internalFormat = GR_GL_RED;
+ }
*externalFormat = GR_GL_RED;
- *externalType = GR_GL_HALF_FLOAT;
} else {
- *internalFormat = GR_GL_ALPHA16F;
+ if (getSizedInternalFormat) {
+ *internalFormat = GR_GL_ALPHA16F;
+ } else {
+ *internalFormat = GR_GL_ALPHA;
+ }
*externalFormat = GR_GL_ALPHA;
+ }
+ if (kGL_GrGLStandard == this->glStandard() || this->glVersion() >= GR_GL_VER(3, 0)) {
*externalType = GR_GL_HALF_FLOAT;
+ } else {
+ *externalType = GR_GL_HALF_FLOAT_OES;
}
break;