Added GL_MAX_ARRAY_TEXTURE_LAYERS.

TRAC #22705 Signed-off-by: Jamie Madill Signed-off-by: Shannon Woods Author: Geoff Lang git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2177 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 6c86bd5f
......@@ -296,11 +296,13 @@ void Context::makeCurrent(egl::Surface *surface)
mMaxCubeTextureDimension = std::min(mMax2DTextureDimension, (int)gl::IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE);
mMax3DTextureDimension = std::min(std::min(mMax2DTextureDimension, mRenderer->getMaxTextureDepth()),
(int)gl::IMPLEMENTATION_MAX_3D_TEXTURE_SIZE);
mMax2DArrayTextureLayers = mRenderer->getMaxTextureArrayLayers();
mMaxRenderbufferDimension = mMax2DTextureDimension;
mMaxTextureLevel = log2(mMax2DTextureDimension) + 1;
mMaxTextureAnisotropy = mRenderer->getTextureMaxAnisotropy();
TRACE("Max2DTextureDimension=%d, MaxCubeTextureDimension=%d, Max3DTextureDimension=%d, MaxRenderbufferDimension=%d, "
"MaxTextureLevel=%d, MaxTextureAnisotropy=%f", mMax2DTextureDimension, mMaxCubeTextureDimension, mMax3DTextureDimension,
TRACE("Max2DTextureDimension=%d, MaxCubeTextureDimension=%d, Max3DTextureDimension=%d, Max2DArrayTextureLayers = %d, "
"MaxRenderbufferDimension=%d, MaxTextureLevel=%d, MaxTextureAnisotropy=%f",
mMax2DTextureDimension, mMaxCubeTextureDimension, mMax3DTextureDimension, mMax2DArrayTextureLayers,
mMaxRenderbufferDimension, mMaxTextureLevel, mMaxTextureAnisotropy);
mSupportsEventQueries = mRenderer->getEventQuerySupport();
......@@ -1487,6 +1489,7 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
case GL_MAX_TEXTURE_SIZE: *params = getMaximum2DTextureDimension(); break;
case GL_MAX_CUBE_MAP_TEXTURE_SIZE: *params = getMaximumCubeTextureDimension(); break;
case GL_MAX_3D_TEXTURE_SIZE: *params = getMaximum3DTextureDimension(); break;
case GL_MAX_ARRAY_TEXTURE_LAYERS: *params = getMaximum2DArrayTextureLayers(); break;
case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
params[0] = mNumCompressedTextureFormats;
break;
......@@ -1905,6 +1908,7 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu
case GL_PIXEL_UNPACK_BUFFER_BINDING:
case GL_TEXTURE_BINDING_3D:
case GL_MAX_3D_TEXTURE_SIZE:
case GL_MAX_ARRAY_TEXTURE_LAYERS:
{
*type = GL_INT;
*numParams = 1;
......@@ -2469,6 +2473,11 @@ int Context::getMaximum3DTextureDimension() const
return mMax3DTextureDimension;
}
int Context::getMaximum2DArrayTextureLayers() const
{
return mMax2DArrayTextureLayers;
}
int Context::getMaximumTextureLevel() const
{
return mMaxTextureLevel;
......
......@@ -422,6 +422,7 @@ class Context
int getMaximum2DTextureDimension() const;
int getMaximumCubeTextureDimension() const;
int getMaximum3DTextureDimension() const;
int getMaximum2DArrayTextureLayers() const;
int getMaximumTextureLevel() const;
unsigned int getMaximumRenderTargets() const;
GLsizei getMaxSupportedSamples() const;
......@@ -539,6 +540,7 @@ class Context
int mMax2DTextureDimension;
int mMaxCubeTextureDimension;
int mMax3DTextureDimension;
int mMax2DArrayTextureLayers;
int mMaxTextureLevel;
float mMaxTextureAnisotropy;
bool mSupportsEventQueries;
......
......@@ -50,6 +50,7 @@ enum
IMPLEMENTATION_MAX_2D_TEXTURE_SIZE = 16384,
IMPLEMENTATION_MAX_CUBE_MAP_TEXTURE_SIZE = 16384,
IMPLEMENTATION_MAX_3D_TEXTURE_SIZE = 2048,
IMPLEMENTATION_MAX_2D_ARRAY_TEXTURE_LAYERS = 2048,
IMPLEMENTATION_MAX_TEXTURE_LEVELS = 15 // 1+log2 of MAX_TEXTURE_SIZE
};
......
......@@ -182,6 +182,7 @@ class Renderer
virtual int getMaxTextureWidth() const = 0;
virtual int getMaxTextureHeight() const = 0;
virtual int getMaxTextureDepth() const = 0;
virtual int getMaxTextureArrayLayers() const = 0;
virtual bool get32BitIndexSupport() const = 0;
virtual int getMinSwapInterval() const = 0;
virtual int getMaxSwapInterval() const = 0;
......
......@@ -2389,6 +2389,17 @@ int Renderer11::getMaxTextureDepth() const
}
}
int Renderer11::getMaxTextureArrayLayers() const
{
switch (mFeatureLevel)
{
case D3D_FEATURE_LEVEL_11_0: return D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION; // 2048
case D3D_FEATURE_LEVEL_10_1:
case D3D_FEATURE_LEVEL_10_0: return D3D10_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION; // 512
default: UNREACHABLE(); return 0;
}
}
bool Renderer11::get32BitIndexSupport() const
{
switch (mFeatureLevel)
......
......@@ -127,6 +127,7 @@ class Renderer11 : public Renderer
virtual int getMaxTextureWidth() const;
virtual int getMaxTextureHeight() const;
virtual int getMaxTextureDepth() const;
virtual int getMaxTextureArrayLayers() const;
virtual bool get32BitIndexSupport() const;
virtual int getMinSwapInterval() const;
virtual int getMaxSwapInterval() const;
......
......@@ -2379,6 +2379,12 @@ int Renderer9::getMaxTextureDepth() const
return 1;
}
int Renderer9::getMaxTextureArrayLayers() const
{
// 2D array textures are not available in the D3D9 backend.
return 1;
}
bool Renderer9::get32BitIndexSupport() const
{
return mDeviceCaps.MaxVertexIndex >= (1 << 16);
......
......@@ -142,6 +142,7 @@ class Renderer9 : public Renderer
virtual int getMaxTextureWidth() const;
virtual int getMaxTextureHeight() const;
virtual int getMaxTextureDepth() const;
virtual int getMaxTextureArrayLayers() const;
virtual bool get32BitIndexSupport() const;
DWORD getCapsDeclTypes() const;
virtual int getMinSwapInterval() const;
......
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