diff options
author | petersont@google.com <petersont@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-30 19:57:56 +0000 |
---|---|---|
committer | petersont@google.com <petersont@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-09-30 19:57:56 +0000 |
commit | f45e5deec9729cf2fcd5edb8a23b76e91334984d (patch) | |
tree | 009b6e9127f32aa1cdcb0699a9de88940e9c5b41 /o3d/command_buffer/service/cross | |
parent | 35b6e20279d714ab37fb9196ee57253111bbb83e (diff) | |
download | chromium_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.cc | 6 | ||||
-rw-r--r-- | o3d/command_buffer/service/cross/gl/texture_gl.cc | 35 |
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 |