Hash :
10ef2156
Author :
Date :
2014-10-20T17:04:34
Move Texture Serials to the base class. It's reasonable to use the serial logic on both the GL and all other translated Renderers, since we check the logic on the GL-side. Serials give us a way to identify Textures that aren't raw pointers and aren't "id". "id" has issues when Textures are deleted, then re-allocated with the same value. BUG=angle:781 Change-Id: I1a2a8b6f4ea3db915574c957c143a81e0210ec7d Reviewed-on: https://chromium-review.googlesource.com/222922 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
//
// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// TextureStorage.h: Defines the abstract rx::TextureStorage class.
#ifndef LIBGLESV2_RENDERER_TEXTURESTORAGE_H_
#define LIBGLESV2_RENDERER_TEXTURESTORAGE_H_
#include "libGLESv2/Error.h"
#include "common/debug.h"
#include "libGLESv2/Error.h"
#include <GLES2/gl2.h>
#include <cstdint>
namespace gl
{
struct ImageIndex;
struct Box;
struct PixelUnpackState;
}
namespace rx
{
class Renderer;
class SwapChain;
class RenderTarget;
class Image;
class TextureStorage
{
public:
TextureStorage();
virtual ~TextureStorage() {};
virtual int getTopLevel() const = 0;
virtual bool isRenderTarget() const = 0;
virtual bool isManaged() const = 0;
virtual int getLevelCount() const = 0;
virtual gl::Error getRenderTarget(const gl::ImageIndex &index, RenderTarget **outRT) = 0;
virtual void generateMipmap(const gl::ImageIndex &sourceIndex, const gl::ImageIndex &destIndex) = 0;
virtual gl::Error copyToStorage(TextureStorage *destStorage) = 0;
virtual gl::Error setData(const gl::ImageIndex &index, Image *image, const gl::Box *destBox, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixelData) = 0;
unsigned int getRenderTargetSerial(const gl::ImageIndex &index) const;
unsigned int getTextureSerial() const;
protected:
void initializeSerials(unsigned int rtSerialsToReserve, unsigned int rtSerialsLayerStride);
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage);
unsigned int mFirstRenderTargetSerial;
unsigned int mRenderTargetSerialsLayerStride;
};
}
#endif // LIBGLESV2_RENDERER_TEXTURESTORAGE_H_