diff options
Diffstat (limited to 'src/libGLESv2/renderer/d3d/d3d11/Image11.cpp')
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Image11.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/libGLESv2/renderer/d3d/d3d11/Image11.cpp b/src/libGLESv2/renderer/d3d/d3d11/Image11.cpp index c9f538b4..a8196f64 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Image11.cpp +++ b/src/libGLESv2/renderer/d3d/d3d11/Image11.cpp @@ -331,14 +331,21 @@ gl::Error Image11::copy(GLint xoffset, GLint yoffset, GLint zoffset, const gl::R TextureStorage11 *sourceStorage11 = TextureStorage11::makeTextureStorage11(source); UINT subresourceIndex = sourceStorage11->getSubresourceIndex(sourceIndex); - ID3D11Texture2D *sourceTexture2D = d3d11::DynamicCastComObject<ID3D11Texture2D>(sourceStorage11->getResource()); + ID3D11Resource *resource = NULL; + gl::Error error = sourceStorage11->getResource(&resource); + if (error.isError()) + { + return error; + } + + ID3D11Texture2D *sourceTexture2D = d3d11::DynamicCastComObject<ID3D11Texture2D>(resource); if (!sourceTexture2D) { return gl::Error(GL_OUT_OF_MEMORY, "Failed to retrieve the ID3D11Texture2D from the source TextureStorage."); } - gl::Error error = copy(xoffset, yoffset, zoffset, sourceArea, sourceTexture2D, subresourceIndex); + error = copy(xoffset, yoffset, zoffset, sourceArea, sourceTexture2D, subresourceIndex); SafeRelease(sourceTexture2D); |