summaryrefslogtreecommitdiffstats
path: root/o3d/command_buffer/service/cross
diff options
context:
space:
mode:
authorpetersont@google.com <petersont@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-30 19:57:56 +0000
committerpetersont@google.com <petersont@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-30 19:57:56 +0000
commitf45e5deec9729cf2fcd5edb8a23b76e91334984d (patch)
tree009b6e9127f32aa1cdcb0699a9de88940e9c5b41 /o3d/command_buffer/service/cross
parent35b6e20279d714ab37fb9196ee57253111bbb83e (diff)
downloadchromium_src-f45e5deec9729cf2fcd5edb8a23b76e91334984d.zip
chromium_src-f45e5deec9729cf2fcd5edb8a23b76e91334984d.tar.gz
chromium_src-f45e5deec9729cf2fcd5edb8a23b76e91334984d.tar.bz2
Added 32-bit float textures to command buffers, also changed the texture::Format enum to be more like Texture::Format in o3d.
Review URL: http://codereview.chromium.org/227011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27644 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'o3d/command_buffer/service/cross')
-rw-r--r--o3d/command_buffer/service/cross/gapi_decoder.cc6
-rw-r--r--o3d/command_buffer/service/cross/gl/texture_gl.cc35
2 files changed, 30 insertions, 11 deletions
diff --git a/o3d/command_buffer/service/cross/gapi_decoder.cc b/o3d/command_buffer/service/cross/gapi_decoder.cc
index 3e6f0a2..9a4be8a 100644
--- a/o3d/command_buffer/service/cross/gapi_decoder.cc
+++ b/o3d/command_buffer/service/cross/gapi_decoder.cc
@@ -531,7 +531,7 @@ BufferSyncInterface::ParseError GAPIDecoder::HandleCreateTexture2d(
unsigned int max_levels =
1 + base::bits::Log2Ceiling(std::max(width, height));
if ((width == 0) || (height == 0) || (levels > max_levels) ||
- (unused != 0) || (format >= texture::kNumFormats) || (levels == 0))
+ (unused != 0) || (format == texture::kUnknown) || (levels == 0))
return BufferSyncInterface::kParseInvalidArguments;
bool enable_render_surfaces = !!flags;
return gapi_->CreateTexture2D(args.texture_id, width, height, levels,
@@ -558,7 +558,7 @@ BufferSyncInterface::ParseError GAPIDecoder::HandleCreateTexture3d(
1 + base::bits::Log2Ceiling(std::max(depth, std::max(width, height)));
if ((width == 0) || (height == 0) || (depth == 0) ||
(levels > max_levels) || (unused1 != 0) || (unused2 != 0) ||
- (format >= texture::kNumFormats) || (levels == 0))
+ (format == texture::kUnknown) || (levels == 0))
return BufferSyncInterface::kParseInvalidArguments;
bool enable_render_surfaces = !!flags;
return gapi_->CreateTexture3D(args.texture_id, width, height, depth, levels,
@@ -582,7 +582,7 @@ BufferSyncInterface::ParseError GAPIDecoder::HandleCreateTextureCube(
unsigned int flags = cmd::CreateTextureCube::Flags::Get(levels_format_flags);
unsigned int max_levels = 1 + base::bits::Log2Ceiling(side);
if ((side == 0) || (levels > max_levels) || (unused1 != 0) ||
- (unused2 != 0) || (format >= texture::kNumFormats) || (levels == 0))
+ (unused2 != 0) || (format == texture::kUnknown) || (levels == 0))
return BufferSyncInterface::kParseInvalidArguments;
bool enable_render_surfaces = !!flags;
return gapi_->CreateTextureCube(args.texture_id, side, levels,
diff --git a/o3d/command_buffer/service/cross/gl/texture_gl.cc b/o3d/command_buffer/service/cross/gl/texture_gl.cc
index 68a471a..2b01e48 100644
--- a/o3d/command_buffer/service/cross/gl/texture_gl.cc
+++ b/o3d/command_buffer/service/cross/gl/texture_gl.cc
@@ -47,29 +47,48 @@ bool GetGLFormatType(texture::Format format,
GLenum *gl_format,
GLenum *gl_type) {
switch (format) {
- case texture::kXRGB8:
+ case texture::kXRGB8: {
*internal_format = GL_RGB;
*gl_format = GL_BGRA;
*gl_type = GL_UNSIGNED_BYTE;
- return true;
- case texture::kARGB8:
+ break;
+ }
+ case texture::kARGB8: {
*internal_format = GL_RGBA;
*gl_format = GL_BGRA;
*gl_type = GL_UNSIGNED_BYTE;
- return true;
- case texture::kABGR16F:
+ break;
+ }
+ case texture::kABGR16F: {
*internal_format = GL_RGBA16F_ARB;
*gl_format = GL_RGBA;
*gl_type = GL_HALF_FLOAT_ARB;
- return true;
- case texture::kDXT1:
+ break;
+ }
+ case texture::kR32F: {
+ *internal_format = GL_LUMINANCE32F_ARB;
+ *gl_format = GL_LUMINANCE;
+ *gl_type = GL_FLOAT;
+ break;
+ }
+ case texture::kABGR32F: {
+ *internal_format = GL_RGBA32F_ARB;
+ *gl_format = GL_BGRA;
+ *gl_type = GL_FLOAT;
+ break;
+ }
+ case texture::kDXT1: {
*internal_format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
*gl_format = 0;
*gl_type = 0;
- return true;
+ break;
+ }
+ // TODO(petersont): Add DXT3/5 support.
default:
return false;
}
+
+ return true;
}
// Helper class used to prepare image data to match the layout that