Moves ConvertTextureInternalFormat to the Renderer

TRAC #22000 Signed-off-by: Daniel Koch git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1407 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 70062c98
...@@ -411,8 +411,9 @@ GLenum Texture2D::getActualFormat(GLint level) const ...@@ -411,8 +411,9 @@ GLenum Texture2D::getActualFormat(GLint level) const
void Texture2D::redefineImage(GLint level, GLint internalformat, GLsizei width, GLsizei height) void Texture2D::redefineImage(GLint level, GLint internalformat, GLsizei width, GLsizei height)
{ {
releaseTexImage(); releaseTexImage();
assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
bool redefined = mImageArray[level].redefine(internalformat, width, height, false); rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
bool redefined = mImageArray[level].redefine(renderer9, internalformat, width, height, false);
if (mTexStorage && redefined) if (mTexStorage && redefined)
{ {
...@@ -441,11 +442,13 @@ void Texture2D::bindTexImage(egl::Surface *surface) ...@@ -441,11 +442,13 @@ void Texture2D::bindTexImage(egl::Surface *surface)
GLint internalformat = surface->getFormat(); GLint internalformat = surface->getFormat();
mImageArray[0].redefine(internalformat, surface->getWidth(), surface->getHeight(), true); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
mImageArray[0].redefine(renderer9, internalformat, surface->getWidth(), surface->getHeight(), true);
delete mTexStorage; delete mTexStorage;
rx::SwapChain *swapchain = surface->getSwapChain(); // D3D9_REPLACE rx::SwapChain *swapchain = surface->getSwapChain(); // D3D9_REPLACE
mTexStorage = new TextureStorage2D(mRenderer, swapchain); mTexStorage = new TextureStorage2D(renderer9, swapchain);
mDirtyImages = true; mDirtyImages = true;
mSurface = surface; mSurface = surface;
...@@ -465,9 +468,11 @@ void Texture2D::releaseTexImage() ...@@ -465,9 +468,11 @@ void Texture2D::releaseTexImage()
mTexStorage = NULL; mTexStorage = NULL;
} }
assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++) for (int i = 0; i < IMPLEMENTATION_MAX_TEXTURE_LEVELS; i++)
{ {
mImageArray[i].redefine(GL_RGBA8_OES, 0, 0, true); mImageArray[i].redefine(renderer9, GL_RGBA8_OES, 0, 0, true);
} }
} }
} }
...@@ -582,19 +587,21 @@ void Texture2D::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yo ...@@ -582,19 +587,21 @@ void Texture2D::copySubImage(GLenum target, GLint level, GLint xoffset, GLint yo
void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) void Texture2D::storage(GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
{ {
delete mTexStorage; delete mTexStorage;
mTexStorage = new TextureStorage2D(mRenderer, levels, internalformat, mUsage, false, width, height); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
mTexStorage = new TextureStorage2D(renderer9, levels, internalformat, mUsage, false, width, height);
mImmutable = true; mImmutable = true;
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
{ {
mImageArray[level].redefine(internalformat, width, height, true); mImageArray[level].redefine(renderer9, internalformat, width, height, true);
width = std::max(1, width >> 1); width = std::max(1, width >> 1);
height = std::max(1, height >> 1); height = std::max(1, height >> 1);
} }
for (int level = levels; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++) for (int level = levels; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
{ {
mImageArray[level].redefine(GL_NONE, 0, 0, true); mImageArray[level].redefine(renderer9, GL_NONE, 0, 0, true);
} }
if (mTexStorage->isManaged()) if (mTexStorage->isManaged())
...@@ -723,7 +730,9 @@ void Texture2D::createTexture() ...@@ -723,7 +730,9 @@ void Texture2D::createTexture()
GLenum internalformat = mImageArray[0].getInternalFormat(); GLenum internalformat = mImageArray[0].getInternalFormat();
delete mTexStorage; delete mTexStorage;
mTexStorage = new TextureStorage2D(mRenderer, levels, internalformat, mUsage, false, width, height); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
mTexStorage = new TextureStorage2D(renderer9, levels, internalformat, mUsage, false, width, height);
if (mTexStorage->isManaged()) if (mTexStorage->isManaged())
{ {
...@@ -766,7 +775,9 @@ void Texture2D::convertToRenderTarget() ...@@ -766,7 +775,9 @@ void Texture2D::convertToRenderTarget()
GLint levels = creationLevels(width, height); GLint levels = creationLevels(width, height);
GLenum internalformat = mImageArray[0].getInternalFormat(); GLenum internalformat = mImageArray[0].getInternalFormat();
newTexStorage = new TextureStorage2D(mRenderer, levels, internalformat, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, true, width, height); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
newTexStorage = new TextureStorage2D(renderer9, levels, internalformat, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, true, width, height);
if (mTexStorage != NULL) if (mTexStorage != NULL)
{ {
...@@ -1171,7 +1182,9 @@ void TextureCubeMap::createTexture() ...@@ -1171,7 +1182,9 @@ void TextureCubeMap::createTexture()
GLenum internalformat = mImageArray[0][0].getInternalFormat(); GLenum internalformat = mImageArray[0][0].getInternalFormat();
delete mTexStorage; delete mTexStorage;
mTexStorage = new TextureStorageCubeMap(mRenderer, levels, internalformat, mUsage, false, size); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
mTexStorage = new TextureStorageCubeMap(renderer9, levels, internalformat, mUsage, false, size);
if (mTexStorage->isManaged()) if (mTexStorage->isManaged())
{ {
...@@ -1219,7 +1232,9 @@ void TextureCubeMap::convertToRenderTarget() ...@@ -1219,7 +1232,9 @@ void TextureCubeMap::convertToRenderTarget()
GLint levels = creationLevels(size); GLint levels = creationLevels(size);
GLenum internalformat = mImageArray[0][0].getInternalFormat(); GLenum internalformat = mImageArray[0][0].getInternalFormat();
newTexStorage = new TextureStorageCubeMap(mRenderer, levels, internalformat, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, true, size); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
newTexStorage = new TextureStorageCubeMap(renderer9, levels, internalformat, GL_FRAMEBUFFER_ATTACHMENT_ANGLE, true, size);
if (mTexStorage != NULL) if (mTexStorage != NULL)
{ {
...@@ -1258,7 +1273,9 @@ unsigned int TextureCubeMap::faceIndex(GLenum face) ...@@ -1258,7 +1273,9 @@ unsigned int TextureCubeMap::faceIndex(GLenum face)
void TextureCubeMap::redefineImage(int face, GLint level, GLint internalformat, GLsizei width, GLsizei height) void TextureCubeMap::redefineImage(int face, GLint level, GLint internalformat, GLsizei width, GLsizei height)
{ {
bool redefined = mImageArray[face][level].redefine(internalformat, width, height, false); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
bool redefined = mImageArray[face][level].redefine(renderer9, internalformat, width, height, false);
if (mTexStorage && redefined) if (mTexStorage && redefined)
{ {
...@@ -1355,14 +1372,16 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi ...@@ -1355,14 +1372,16 @@ void TextureCubeMap::copySubImage(GLenum target, GLint level, GLint xoffset, GLi
void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size) void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size)
{ {
delete mTexStorage; delete mTexStorage;
mTexStorage = new TextureStorageCubeMap(mRenderer, levels, internalformat, mUsage, false, size); assert(dynamic_cast<rx::Renderer9*>(mRenderer) != NULL); // D3D9_REPLACE
rx::Renderer9 *renderer9 = static_cast<rx::Renderer9*>(mRenderer); // D3D9_REPLACE
mTexStorage = new TextureStorageCubeMap(renderer9, levels, internalformat, mUsage, false, size);
mImmutable = true; mImmutable = true;
for (int level = 0; level < levels; level++) for (int level = 0; level < levels; level++)
{ {
for (int face = 0; face < 6; face++) for (int face = 0; face < 6; face++)
{ {
mImageArray[face][level].redefine(internalformat, size, size, true); mImageArray[face][level].redefine(renderer9, internalformat, size, size, true);
size = std::max(1, size >> 1); size = std::max(1, size >> 1);
} }
} }
...@@ -1371,7 +1390,7 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size ...@@ -1371,7 +1390,7 @@ void TextureCubeMap::storage(GLsizei levels, GLenum internalformat, GLsizei size
{ {
for (int face = 0; face < 6; face++) for (int face = 0; face < 6; face++)
{ {
mImageArray[face][level].redefine(GL_NONE, 0, 0, true); mImageArray[face][level].redefine(renderer9, GL_NONE, 0, 0, true);
} }
} }
......
...@@ -263,7 +263,7 @@ void Image::CopyLockableSurfaces(IDirect3DSurface9 *dest, IDirect3DSurface9 *sou ...@@ -263,7 +263,7 @@ void Image::CopyLockableSurfaces(IDirect3DSurface9 *dest, IDirect3DSurface9 *sou
else UNREACHABLE(); else UNREACHABLE();
} }
bool Image::redefine(GLint internalformat, GLsizei width, GLsizei height, bool forceRelease) bool Image::redefine(rx::Renderer9 *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease)
{ {
if (mWidth != width || if (mWidth != width ||
mHeight != height || mHeight != height ||
...@@ -274,7 +274,7 @@ bool Image::redefine(GLint internalformat, GLsizei width, GLsizei height, bool f ...@@ -274,7 +274,7 @@ bool Image::redefine(GLint internalformat, GLsizei width, GLsizei height, bool f
mHeight = height; mHeight = height;
mInternalFormat = internalformat; mInternalFormat = internalformat;
// compute the d3d format that will be used // compute the d3d format that will be used
mD3DFormat = TextureStorage::ConvertTextureInternalFormat(internalformat); mD3DFormat = renderer->ConvertTextureInternalFormat(internalformat);
mActualFormat = dx2es::GetEquivalentFormat(mD3DFormat); mActualFormat = dx2es::GetEquivalentFormat(mD3DFormat);
if (mSurface) if (mSurface)
......
...@@ -16,6 +16,11 @@ ...@@ -16,6 +16,11 @@
#include "common/debug.h" #include "common/debug.h"
namespace rx
{
class Renderer9;
}
namespace gl namespace gl
{ {
class TextureStorage2D; class TextureStorage2D;
...@@ -31,7 +36,7 @@ class Image ...@@ -31,7 +36,7 @@ class Image
static void GenerateMipmap(Image *dest, Image *source); static void GenerateMipmap(Image *dest, Image *source);
static void Image::CopyLockableSurfaces(IDirect3DSurface9 *dest, IDirect3DSurface9 *source); static void Image::CopyLockableSurfaces(IDirect3DSurface9 *dest, IDirect3DSurface9 *source);
bool redefine(GLint internalformat, GLsizei width, GLsizei height, bool forceRelease); bool redefine(rx::Renderer9 *renderer, GLint internalformat, GLsizei width, GLsizei height, bool forceRelease);
void markDirty() {mDirty = true;} void markDirty() {mDirty = true;}
void markClean() {mDirty = false;} void markClean() {mDirty = false;}
......
...@@ -1005,6 +1005,53 @@ int Renderer9::getNearestSupportedSamples(D3DFORMAT format, int requested) const ...@@ -1005,6 +1005,53 @@ int Renderer9::getNearestSupportedSamples(D3DFORMAT format, int requested) const
return -1; return -1;
} }
D3DFORMAT Renderer9::ConvertTextureInternalFormat(GLint internalformat)
{
switch (internalformat)
{
case GL_DEPTH_COMPONENT16:
case GL_DEPTH_COMPONENT32_OES:
case GL_DEPTH24_STENCIL8_OES:
return D3DFMT_INTZ;
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
return D3DFMT_DXT1;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
return D3DFMT_DXT3;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
return D3DFMT_DXT5;
case GL_RGBA32F_EXT:
case GL_RGB32F_EXT:
case GL_ALPHA32F_EXT:
case GL_LUMINANCE32F_EXT:
case GL_LUMINANCE_ALPHA32F_EXT:
return D3DFMT_A32B32G32R32F;
case GL_RGBA16F_EXT:
case GL_RGB16F_EXT:
case GL_ALPHA16F_EXT:
case GL_LUMINANCE16F_EXT:
case GL_LUMINANCE_ALPHA16F_EXT:
return D3DFMT_A16B16G16R16F;
case GL_LUMINANCE8_EXT:
if (getLuminanceTextureSupport())
{
return D3DFMT_L8;
}
break;
case GL_LUMINANCE8_ALPHA8_EXT:
if (getLuminanceAlphaTextureSupport())
{
return D3DFMT_A8L8;
}
break;
case GL_RGB8_OES:
case GL_RGB565:
return D3DFMT_X8R8G8B8;
}
return D3DFMT_A8R8G8B8;
}
D3DPOOL Renderer9::getBufferPool(DWORD usage) const D3DPOOL Renderer9::getBufferPool(DWORD usage) const
{ {
if (mD3d9Ex != NULL) if (mD3d9Ex != NULL)
......
...@@ -109,6 +109,7 @@ class Renderer9 : public Renderer ...@@ -109,6 +109,7 @@ class Renderer9 : public Renderer
virtual GLsizei getMaxSupportedSamples() const; virtual GLsizei getMaxSupportedSamples() const;
int getNearestSupportedSamples(D3DFORMAT format, int requested) const; int getNearestSupportedSamples(D3DFORMAT format, int requested) const;
D3DFORMAT ConvertTextureInternalFormat(GLint internalformat);
D3DPOOL getTexturePool(DWORD usage) const; D3DPOOL getTexturePool(DWORD usage) const;
private: private:
......
...@@ -21,9 +21,9 @@ namespace gl ...@@ -21,9 +21,9 @@ namespace gl
{ {
unsigned int TextureStorage::mCurrentTextureSerial = 1; unsigned int TextureStorage::mCurrentTextureSerial = 1;
TextureStorage::TextureStorage(rx::Renderer *renderer, DWORD usage) TextureStorage::TextureStorage(rx::Renderer9 *renderer, DWORD usage)
: mD3DUsage(usage), : mD3DUsage(usage),
mD3DPool(getDisplay()->getRenderer9()->getTexturePool(usage)), // D3D9_REPLACE mD3DPool(renderer->getTexturePool(usage)),
mRenderer(renderer), mRenderer(renderer),
mTextureSerial(issueTextureSerial()), mTextureSerial(issueTextureSerial()),
mLodOffset(0) mLodOffset(0)
...@@ -75,53 +75,6 @@ bool TextureStorage::IsTextureFormatRenderable(D3DFORMAT format) ...@@ -75,53 +75,6 @@ bool TextureStorage::IsTextureFormatRenderable(D3DFORMAT format)
return false; return false;
} }
D3DFORMAT TextureStorage::ConvertTextureInternalFormat(GLint internalformat)
{
switch (internalformat)
{
case GL_DEPTH_COMPONENT16:
case GL_DEPTH_COMPONENT32_OES:
case GL_DEPTH24_STENCIL8_OES:
return D3DFMT_INTZ;
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
return D3DFMT_DXT1;
case GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE:
return D3DFMT_DXT3;
case GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE:
return D3DFMT_DXT5;
case GL_RGBA32F_EXT:
case GL_RGB32F_EXT:
case GL_ALPHA32F_EXT:
case GL_LUMINANCE32F_EXT:
case GL_LUMINANCE_ALPHA32F_EXT:
return D3DFMT_A32B32G32R32F;
case GL_RGBA16F_EXT:
case GL_RGB16F_EXT:
case GL_ALPHA16F_EXT:
case GL_LUMINANCE16F_EXT:
case GL_LUMINANCE_ALPHA16F_EXT:
return D3DFMT_A16B16G16R16F;
case GL_LUMINANCE8_EXT:
if (getContext()->supportsLuminanceTextures())
{
return D3DFMT_L8;
}
break;
case GL_LUMINANCE8_ALPHA8_EXT:
if (getContext()->supportsLuminanceAlphaTextures())
{
return D3DFMT_A8L8;
}
break;
case GL_RGB8_OES:
case GL_RGB565:
return D3DFMT_X8R8G8B8;
}
return D3DFMT_A8R8G8B8;
}
Blit *TextureStorage::getBlitter() Blit *TextureStorage::getBlitter()
{ {
Context *context = getContext(); Context *context = getContext();
...@@ -207,14 +160,14 @@ bool TextureStorage::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurfac ...@@ -207,14 +160,14 @@ bool TextureStorage::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurfac
return true; return true;
} }
TextureStorage2D::TextureStorage2D(rx::Renderer *renderer, rx::SwapChain *swapchain) : TextureStorage(renderer, D3DUSAGE_RENDERTARGET), mRenderTargetSerial(RenderbufferStorage::issueSerial()) TextureStorage2D::TextureStorage2D(rx::Renderer9 *renderer, rx::SwapChain *swapchain) : TextureStorage(renderer, D3DUSAGE_RENDERTARGET), mRenderTargetSerial(RenderbufferStorage::issueSerial())
{ {
IDirect3DTexture9 *surfaceTexture = swapchain->getOffscreenTexture(); IDirect3DTexture9 *surfaceTexture = swapchain->getOffscreenTexture();
mTexture = surfaceTexture; mTexture = surfaceTexture;
} }
TextureStorage2D::TextureStorage2D(rx::Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height) TextureStorage2D::TextureStorage2D(rx::Renderer9 *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height)
: TextureStorage(renderer, GetTextureUsage(ConvertTextureInternalFormat(internalformat), usage, forceRenderable)), : TextureStorage(renderer, GetTextureUsage(renderer->ConvertTextureInternalFormat(internalformat), usage, forceRenderable)),
mRenderTargetSerial(RenderbufferStorage::issueSerial()) mRenderTargetSerial(RenderbufferStorage::issueSerial())
{ {
mTexture = NULL; mTexture = NULL;
...@@ -222,10 +175,10 @@ TextureStorage2D::TextureStorage2D(rx::Renderer *renderer, int levels, GLenum in ...@@ -222,10 +175,10 @@ TextureStorage2D::TextureStorage2D(rx::Renderer *renderer, int levels, GLenum in
// we handle that here by skipping the d3d texture creation // we handle that here by skipping the d3d texture creation
if (width > 0 && height > 0) if (width > 0 && height > 0)
{ {
IDirect3DDevice9 *device = getDisplay()->getRenderer9()->getDevice(); // D3D9_REPLACE IDirect3DDevice9 *device = renderer->getDevice(); // D3D9_REPLACE
MakeValidSize(false, gl::IsCompressed(internalformat), &width, &height, &mLodOffset); MakeValidSize(false, gl::IsCompressed(internalformat), &width, &height, &mLodOffset);
HRESULT result = device->CreateTexture(width, height, levels ? levels + mLodOffset : 0, getUsage(), HRESULT result = device->CreateTexture(width, height, levels ? levels + mLodOffset : 0, getUsage(),
ConvertTextureInternalFormat(internalformat), getPool(), &mTexture, NULL); renderer->ConvertTextureInternalFormat(internalformat), getPool(), &mTexture, NULL);
if (FAILED(result)) if (FAILED(result))
{ {
...@@ -313,8 +266,8 @@ unsigned int TextureStorage2D::getRenderTargetSerial(GLenum target) const ...@@ -313,8 +266,8 @@ unsigned int TextureStorage2D::getRenderTargetSerial(GLenum target) const
return mRenderTargetSerial; return mRenderTargetSerial;
} }
TextureStorageCubeMap::TextureStorageCubeMap(rx::Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size) TextureStorageCubeMap::TextureStorageCubeMap(rx::Renderer9 *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size)
: TextureStorage(renderer, GetTextureUsage(ConvertTextureInternalFormat(internalformat), usage, forceRenderable)), : TextureStorage(renderer, GetTextureUsage(renderer->ConvertTextureInternalFormat(internalformat), usage, forceRenderable)),
mFirstRenderTargetSerial(RenderbufferStorage::issueCubeSerials()) mFirstRenderTargetSerial(RenderbufferStorage::issueCubeSerials())
{ {
mTexture = NULL; mTexture = NULL;
...@@ -322,11 +275,11 @@ TextureStorageCubeMap::TextureStorageCubeMap(rx::Renderer *renderer, int levels, ...@@ -322,11 +275,11 @@ TextureStorageCubeMap::TextureStorageCubeMap(rx::Renderer *renderer, int levels,
// we handle that here by skipping the d3d texture creation // we handle that here by skipping the d3d texture creation
if (size > 0) if (size > 0)
{ {
IDirect3DDevice9 *device = getDisplay()->getRenderer9()->getDevice(); // D3D9_REPLACE IDirect3DDevice9 *device = renderer->getDevice();
int height = size; int height = size;
MakeValidSize(false, gl::IsCompressed(internalformat), &size, &height, &mLodOffset); MakeValidSize(false, gl::IsCompressed(internalformat), &size, &height, &mLodOffset);
HRESULT result = device->CreateCubeTexture(size, levels ? levels + mLodOffset : 0, getUsage(), HRESULT result = device->CreateCubeTexture(size, levels ? levels + mLodOffset : 0, getUsage(),
ConvertTextureInternalFormat(internalformat), getPool(), &mTexture, NULL); renderer->ConvertTextureInternalFormat(internalformat), getPool(), &mTexture, NULL);
if (FAILED(result)) if (FAILED(result))
{ {
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
namespace rx namespace rx
{ {
class Renderer; class Renderer9;
class SwapChain; class SwapChain;
} }
...@@ -30,13 +30,12 @@ class Blit; ...@@ -30,13 +30,12 @@ class Blit;
class TextureStorage class TextureStorage
{ {
public: public:
TextureStorage(rx::Renderer *renderer, DWORD usage); TextureStorage(rx::Renderer9 *renderer, DWORD usage);
virtual ~TextureStorage(); virtual ~TextureStorage();
static DWORD GetTextureUsage(D3DFORMAT d3dfmt, GLenum glusage, bool forceRenderable); static DWORD GetTextureUsage(D3DFORMAT d3dfmt, GLenum glusage, bool forceRenderable);
static bool IsTextureFormatRenderable(D3DFORMAT format); static bool IsTextureFormatRenderable(D3DFORMAT format);
static D3DFORMAT ConvertTextureInternalFormat(GLint internalformat);
static Blit *getBlitter(); static Blit *getBlitter();
bool isRenderTarget() const; bool isRenderTarget() const;
...@@ -60,7 +59,7 @@ class TextureStorage ...@@ -60,7 +59,7 @@ class TextureStorage
const DWORD mD3DUsage; const DWORD mD3DUsage;
const D3DPOOL mD3DPool; const D3DPOOL mD3DPool;
rx::Renderer *mRenderer; rx::Renderer9 *mRenderer;
const unsigned int mTextureSerial; const unsigned int mTextureSerial;
static unsigned int issueTextureSerial(); static unsigned int issueTextureSerial();
...@@ -71,8 +70,8 @@ class TextureStorage ...@@ -71,8 +70,8 @@ class TextureStorage
class TextureStorage2D : public TextureStorage class TextureStorage2D : public TextureStorage
{ {
public: public:
explicit TextureStorage2D(rx::Renderer *renderer, rx::SwapChain *swapchain); explicit TextureStorage2D(rx::Renderer9 *renderer, rx::SwapChain *swapchain);
TextureStorage2D(rx::Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); TextureStorage2D(rx::Renderer9 *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height);
virtual ~TextureStorage2D(); virtual ~TextureStorage2D();
...@@ -94,7 +93,7 @@ class TextureStorage2D : public TextureStorage ...@@ -94,7 +93,7 @@ class TextureStorage2D : public TextureStorage
class TextureStorageCubeMap : public TextureStorage class TextureStorageCubeMap : public TextureStorage
{ {
public: public:
TextureStorageCubeMap(rx::Renderer *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); TextureStorageCubeMap(rx::Renderer9 *renderer, int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size);
virtual ~TextureStorageCubeMap(); virtual ~TextureStorageCubeMap();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment