Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(275)

Unified Diff: src/gpu/gl/GrGpuGL.cpp

Issue 580863004: Adding 3D lut color filter (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: New version Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/gpu/gl/GrGLCaps.cpp ('K') | « src/gpu/gl/GrGLSL.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/gl/GrGpuGL.cpp
diff --git a/src/gpu/gl/GrGpuGL.cpp b/src/gpu/gl/GrGpuGL.cpp
index 39cb84ecfe8247616b4bd10b77b67e5284c30031..bc6adcd0652cfcf82955334159f6cd6df744ce73 100644
--- a/src/gpu/gl/GrGpuGL.cpp
+++ b/src/gpu/gl/GrGpuGL.cpp
@@ -592,6 +592,11 @@ bool GrGpuGL::uploadTexData(const GrGLTexture::Desc& desc,
&externalFormat, &externalType)) {
return false;
}
+
+ bool is3DTexture = SkToBool(desc.fFlags & k3DTexture_GrTextureFlagBit);
+ if (is3DTexture && !this->glCaps().has3DTexImageSupport()) {
+ return false;
+ }
/*
* check whether to allocate a temporary buffer for flipping y or
@@ -657,6 +662,16 @@ bool GrGpuGL::uploadTexData(const GrGLTexture::Desc& desc,
1, // levels
internalFormat,
desc.fWidth, desc.fHeight));
+ } else if (is3DTexture) {
+ GL_ALLOC_CALL(this->glInterface(),
+ TexImage3D(GR_GL_TEXTURE_3D,
+ 0, // level
+ internalFormat,
+ desc.fWidth, desc.fHeight,
+ desc.fWidth, // FIXME: width is used as depth
bsalomon 2014/09/19 13:47:04 Why not just add a depth to fDesc and get rid of t
sugoi1 2014/09/24 19:12:48 Done.
+ 0, // border
+ externalFormat, externalType,
+ data));
} else {
GL_ALLOC_CALL(this->glInterface(),
TexImage2D(GR_GL_TEXTURE_2D,
@@ -674,23 +689,45 @@ bool GrGpuGL::uploadTexData(const GrGLTexture::Desc& desc,
// if we have data and we used TexStorage to create the texture, we
// now upload with TexSubImage.
if (data && useTexStorage) {
- GL_CALL(TexSubImage2D(GR_GL_TEXTURE_2D,
- 0, // level
- left, top,
- width, height,
- externalFormat, externalType,
- data));
+ if (is3DTexture) {
+ GL_CALL(TexSubImage3D(GR_GL_TEXTURE_3D,
+ 0, // level,
+ left, top,
+ left, // FIXME: left used as Z offset
+ desc.fWidth, desc.fHeight,
+ desc.fWidth, // FIXME: width is used as depth
+ externalFormat, externalType,
+ data));
+ } else {
+ GL_CALL(TexSubImage2D(GR_GL_TEXTURE_2D,
+ 0, // level
+ left, top,
+ width, height,
+ externalFormat, externalType,
+ data));
+ }
}
}
} else {
if (swFlipY || glFlipY) {
top = desc.fHeight - (top + height);
}
- GL_CALL(TexSubImage2D(GR_GL_TEXTURE_2D,
- 0, // level
- left, top,
- width, height,
- externalFormat, externalType, data));
+ if (is3DTexture) {
+ GL_CALL(TexSubImage3D(GR_GL_TEXTURE_3D,
+ 0, // level,
+ left, top,
+ left, // FIXME: left used as Z offset
+ desc.fWidth, desc.fHeight,
+ desc.fWidth, // FIXME: width is used as depth
+ externalFormat, externalType,
+ data));
+ } else {
+ GL_CALL(TexSubImage2D(GR_GL_TEXTURE_2D,
+ 0, // level
+ left, top,
+ width, height,
+ externalFormat, externalType, data));
+ }
}
if (restoreGLRowLength) {
@@ -741,7 +778,9 @@ bool GrGpuGL::uploadCompressedTexData(const GrGLTexture::Desc& desc,
// We only need the internal format for compressed 2D textures.
GrGLenum internalFormat = 0;
- if (!this->configToGLFormats(desc.fConfig, false, &internalFormat, NULL, NULL)) {
+ if (!this->configToGLFormats(desc.fConfig, false, &internalFormat, NULL, NULL) ||
+ // Compressed 3D textures not supported
+ SkToBool(desc.fFlags & k3DTexture_GrTextureFlagBit)) {
return false;
}
« src/gpu/gl/GrGLCaps.cpp ('K') | « src/gpu/gl/GrGLSL.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698