summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'gpu')
-rw-r--r--gpu/command_buffer/service/mailbox_manager.cc13
-rw-r--r--gpu/command_buffer/service/mailbox_manager.h3
-rw-r--r--gpu/command_buffer/service/texture_definition.cc12
-rw-r--r--gpu/command_buffer/service/texture_definition.h4
4 files changed, 27 insertions, 5 deletions
diff --git a/gpu/command_buffer/service/mailbox_manager.cc b/gpu/command_buffer/service/mailbox_manager.cc
index ec7ad94..9019393 100644
--- a/gpu/command_buffer/service/mailbox_manager.cc
+++ b/gpu/command_buffer/service/mailbox_manager.cc
@@ -4,6 +4,8 @@
#include "gpu/command_buffer/service/mailbox_manager.h"
+#include <algorithm>
+
#include "base/rand_util.h"
#include "crypto/hmac.h"
#include "gpu/command_buffer/service/gl_utils.h"
@@ -12,6 +14,11 @@
namespace gpu {
namespace gles2 {
+MailboxName::MailboxName() {
+ std::fill(key, key + sizeof(key), 0);
+ std::fill(signature, signature + sizeof(signature), 0);
+}
+
MailboxManager::MailboxManager()
: hmac_(crypto::HMAC::SHA256),
textures_(std::ptr_fun(&MailboxManager::TargetNameLess)) {
@@ -19,9 +26,11 @@ MailboxManager::MailboxManager()
bool success = hmac_.Init(
base::StringPiece(private_key_, sizeof(private_key_)));
DCHECK(success);
+ DCHECK(!IsMailboxNameValid(MailboxName()));
}
MailboxManager::~MailboxManager() {
+ DCHECK(!textures_.size());
}
void MailboxManager::GenerateMailboxName(MailboxName* name) {
@@ -36,10 +45,8 @@ TextureDefinition* MailboxManager::ConsumeTexture(unsigned target,
TextureDefinitionMap::iterator it =
textures_.find(TargetName(target, name));
- if (it == textures_.end()) {
- NOTREACHED();
+ if (it == textures_.end())
return NULL;
- }
TextureDefinition* definition = it->second.definition.release();
textures_.erase(it);
diff --git a/gpu/command_buffer/service/mailbox_manager.h b/gpu/command_buffer/service/mailbox_manager.h
index 337998d..8f97dd4 100644
--- a/gpu/command_buffer/service/mailbox_manager.h
+++ b/gpu/command_buffer/service/mailbox_manager.h
@@ -30,7 +30,8 @@ class TextureManager;
// Identifies a mailbox where a texture definition can be stored for
// transferring textures between contexts that are not in the same context
// group. It is a random key signed with a hash of a private key.
-struct MailboxName {
+struct GPU_EXPORT MailboxName {
+ MailboxName();
GLbyte key[GL_MAILBOX_SIZE_CHROMIUM / 2];
GLbyte signature[GL_MAILBOX_SIZE_CHROMIUM / 2];
};
diff --git a/gpu/command_buffer/service/texture_definition.cc b/gpu/command_buffer/service/texture_definition.cc
index aba0dfa..e1c606f 100644
--- a/gpu/command_buffer/service/texture_definition.cc
+++ b/gpu/command_buffer/service/texture_definition.cc
@@ -27,6 +27,18 @@ TextureDefinition::LevelInfo::LevelInfo(GLenum target,
cleared(cleared) {
}
+TextureDefinition::LevelInfo::LevelInfo()
+ : target(0),
+ internal_format(0),
+ width(0),
+ height(0),
+ depth(0),
+ border(0),
+ format(0),
+ type(0),
+ cleared(true) {
+}
+
TextureDefinition::TextureDefinition(GLenum target,
GLuint service_id,
GLenum min_filter,
diff --git a/gpu/command_buffer/service/texture_definition.h b/gpu/command_buffer/service/texture_definition.h
index 0a9910b..7f7d3cd 100644
--- a/gpu/command_buffer/service/texture_definition.h
+++ b/gpu/command_buffer/service/texture_definition.h
@@ -19,7 +19,7 @@ namespace gles2 {
// context using the same GLShareGroup with the corresponding service ID.
class GPU_EXPORT TextureDefinition {
public:
- struct LevelInfo {
+ struct GPU_EXPORT LevelInfo {
LevelInfo(GLenum target,
GLenum internal_format,
GLsizei width,
@@ -29,6 +29,8 @@ class GPU_EXPORT TextureDefinition {
GLenum format,
GLenum type,
bool cleared);
+ LevelInfo();
+
GLenum target;
GLenum internal_format;
GLsizei width;