Add a helper method to return the native format backing a GL texture type.

TRAC #23844

Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index 6fb0bf6..dde569e 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -265,6 +265,7 @@
                                          GLenum destinationFormat, GLenum sourcePixelsType, const gl::Box &destArea) = 0;
 
     virtual bool getLUID(LUID *adapterLuid) const = 0;
+    virtual GLint getNativeTextureFormat(GLint internalFormat) const = 0;
 
   protected:
     bool initializeCompiler();
diff --git a/src/libGLESv2/renderer/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
index 8d2b32d..8721333 100644
--- a/src/libGLESv2/renderer/d3d11/Renderer11.cpp
+++ b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
@@ -3338,6 +3338,12 @@
     return true;
 }
 
+GLint Renderer11::getNativeTextureFormat(GLint internalFormat) const
+{
+    int clientVersion = getCurrentClientVersion();
+    return d3d11_gl::GetInternalFormat(gl_d3d11::GetTexFormat(internalFormat, clientVersion), clientVersion);
+}
+
 Renderer11::MultisampleSupportInfo Renderer11::getMultisampleSupportInfo(DXGI_FORMAT format)
 {
     MultisampleSupportInfo supportInfo = { 0 };
diff --git a/src/libGLESv2/renderer/d3d11/Renderer11.h b/src/libGLESv2/renderer/d3d11/Renderer11.h
index 226c963..f28ca34 100644
--- a/src/libGLESv2/renderer/d3d11/Renderer11.h
+++ b/src/libGLESv2/renderer/d3d11/Renderer11.h
@@ -217,6 +217,7 @@
     void setOneTimeRenderTarget(ID3D11RenderTargetView *renderTargetView);
 
     virtual bool getLUID(LUID *adapterLuid) const;
+    virtual GLint getNativeTextureFormat(GLint internalFormat) const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Renderer11);
diff --git a/src/libGLESv2/renderer/d3d9/Renderer9.cpp b/src/libGLESv2/renderer/d3d9/Renderer9.cpp
index 5af41be..4cf78fd 100644
--- a/src/libGLESv2/renderer/d3d9/Renderer9.cpp
+++ b/src/libGLESv2/renderer/d3d9/Renderer9.cpp
@@ -3329,4 +3329,9 @@
     return false;
 }
 
+GLint Renderer9::getNativeTextureFormat(GLint internalFormat) const
+{
+    return d3d9_gl::GetInternalFormat(gl_d3d9::GetTextureFormat(internalFormat, this));
+}
+
 }
diff --git a/src/libGLESv2/renderer/d3d9/Renderer9.h b/src/libGLESv2/renderer/d3d9/Renderer9.h
index 3234794..344f57a 100644
--- a/src/libGLESv2/renderer/d3d9/Renderer9.h
+++ b/src/libGLESv2/renderer/d3d9/Renderer9.h
@@ -227,6 +227,7 @@
     D3DPOOL getTexturePool(DWORD usage) const;
 
     virtual bool getLUID(LUID *adapterLuid) const;
+    virtual GLint getNativeTextureFormat(GLint internalFormat) const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Renderer9);