| Index: gpu/command_buffer/client/gles2_implementation.h
 | 
| ===================================================================
 | 
| --- gpu/command_buffer/client/gles2_implementation.h	(revision 52147)
 | 
| +++ gpu/command_buffer/client/gles2_implementation.h	(working copy)
 | 
| @@ -19,6 +19,9 @@
 | 
|  #define GLES2_SUPPORT_CLIENT_SIDE_BUFFERS 1
 | 
|  
 | 
|  namespace gpu {
 | 
| +
 | 
| +class MappedMemoryManager;
 | 
| +
 | 
|  namespace gles2 {
 | 
|  
 | 
|  class ClientSideBufferHelper;
 | 
| @@ -145,15 +148,15 @@
 | 
|      }
 | 
|    #endif
 | 
|  
 | 
| -   GLuint MakeTextureId() {
 | 
| -     GLuint id;
 | 
| -     texture_id_handler_->MakeIds(0, 1, &id);
 | 
| -     return id;
 | 
| -   }
 | 
| +  GLuint MakeTextureId() {
 | 
| +    GLuint id;
 | 
| +    texture_id_handler_->MakeIds(0, 1, &id);
 | 
| +    return id;
 | 
| +  }
 | 
|  
 | 
| -   void FreeTextureId(GLuint id) {
 | 
| -     texture_id_handler_->FreeIds(1, &id);
 | 
| -   }
 | 
| +  void FreeTextureId(GLuint id) {
 | 
| +    texture_id_handler_->FreeIds(1, &id);
 | 
| +  }
 | 
|  
 | 
|   private:
 | 
|    // Wraps RingBufferWrapper to provide aligned allocations.
 | 
| @@ -181,6 +184,87 @@
 | 
|      }
 | 
|    };
 | 
|  
 | 
| +  // Base class for mapped resources.
 | 
| +  struct MappedResource {
 | 
| +    MappedResource(GLenum _access, int _shm_id, void* mem, unsigned int offset)
 | 
| +        : access(_access),
 | 
| +          shm_id(_shm_id),
 | 
| +          shm_memory(mem),
 | 
| +          shm_offset(offset) {
 | 
| +    }
 | 
| +
 | 
| +    // access mode. Currently only GL_WRITE_ONLY is valid
 | 
| +    GLenum access;
 | 
| +
 | 
| +    // Shared memory ID for buffer.
 | 
| +    int shm_id;
 | 
| +
 | 
| +    // Address of shared memory
 | 
| +    void* shm_memory;
 | 
| +
 | 
| +    // Offset of shared memory
 | 
| +    unsigned int shm_offset;
 | 
| +  };
 | 
| +
 | 
| +  // Used to track mapped textures.
 | 
| +  struct MappedTexture : public MappedResource {
 | 
| +    MappedTexture(
 | 
| +        GLenum access,
 | 
| +        int shm_id,
 | 
| +        void* shm_mem,
 | 
| +        unsigned int shm_offset,
 | 
| +        GLenum _target,
 | 
| +        GLint _level,
 | 
| +        GLint _xoffset,
 | 
| +        GLint _yoffset,
 | 
| +        GLsizei _width,
 | 
| +        GLsizei _height,
 | 
| +        GLenum _format,
 | 
| +        GLenum _type)
 | 
| +        : MappedResource(access, shm_id, shm_mem, shm_offset),
 | 
| +          target(_target),
 | 
| +          level(_level),
 | 
| +          xoffset(_xoffset),
 | 
| +          yoffset(_yoffset),
 | 
| +          width(_width),
 | 
| +          height(_height),
 | 
| +          format(_format),
 | 
| +          type(_type) {
 | 
| +    }
 | 
| +
 | 
| +    // These match the arguments to TexSubImage2D.
 | 
| +    GLenum target;
 | 
| +    GLint level;
 | 
| +    GLint xoffset;
 | 
| +    GLint yoffset;
 | 
| +    GLsizei width;
 | 
| +    GLsizei height;
 | 
| +    GLenum format;
 | 
| +    GLenum type;
 | 
| +  };
 | 
| +
 | 
| +  // Used to track mapped buffers.
 | 
| +  struct MappedBuffer : public MappedResource {
 | 
| +    MappedBuffer(
 | 
| +        GLenum access,
 | 
| +        int shm_id,
 | 
| +        void* shm_mem,
 | 
| +        unsigned int shm_offset,
 | 
| +        GLenum _target,
 | 
| +        GLintptr _offset,
 | 
| +        GLsizeiptr _size)
 | 
| +        : MappedResource(access, shm_id, shm_mem, shm_offset),
 | 
| +          target(_target),
 | 
| +          offset(_offset),
 | 
| +          size(_size) {
 | 
| +    }
 | 
| +
 | 
| +    // These match the arguments to BufferSubData.
 | 
| +    GLenum target;
 | 
| +    GLintptr offset;
 | 
| +    GLsizeiptr size;
 | 
| +  };
 | 
| +
 | 
|    // Gets the shared memory id for the result buffer.
 | 
|    uint32 result_shm_id() const {
 | 
|      return transfer_buffer_id_;
 | 
| @@ -291,6 +375,14 @@
 | 
|    typedef std::map<uint32, std::string> GLStringMap;
 | 
|    GLStringMap gl_strings_;
 | 
|  
 | 
| +  typedef std::map<const void*, MappedBuffer> MappedBufferMap;
 | 
| +  MappedBufferMap mapped_buffers_;
 | 
| +
 | 
| +  typedef std::map<const void*, MappedTexture> MappedTextureMap;
 | 
| +  MappedTextureMap mapped_textures_;
 | 
| +
 | 
| +  scoped_ptr<MappedMemoryManager> mapped_memory_;
 | 
| +
 | 
|    DISALLOW_COPY_AND_ASSIGN(GLES2Implementation);
 | 
|  };
 | 
|  
 | 
| 
 |