Commit edcc6bc5 by Jamie Madill

Make device lost flag a RendererD3D member.

This flag we used in both D3D renderers, and hence we can move it to the base class to share a bit of common code. BUG=angle:795 Change-Id: I8bd60796bfeb9590bdf798f9d044f8e20c7ad779 Reviewed-on: https://chromium-review.googlesource.com/228912Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 4c76feac
...@@ -140,7 +140,7 @@ class Renderer ...@@ -140,7 +140,7 @@ class Renderer
// lost device // lost device
//TODO(jmadill): investigate if this stuff is necessary in GL //TODO(jmadill): investigate if this stuff is necessary in GL
virtual void notifyDeviceLost() = 0; virtual void notifyDeviceLost() = 0;
virtual bool isDeviceLost() = 0; virtual bool isDeviceLost() const = 0;
virtual bool testDeviceLost() = 0; virtual bool testDeviceLost() = 0;
virtual bool testDeviceResettable() = 0; virtual bool testDeviceResettable() = 0;
......
...@@ -8,20 +8,22 @@ ...@@ -8,20 +8,22 @@
#include "libANGLE/renderer/d3d/RendererD3D.h" #include "libANGLE/renderer/d3d/RendererD3D.h"
#include "libANGLE/renderer/d3d/IndexDataManager.h" #include "common/utilities.h"
#include "libANGLE/Display.h"
#include "libANGLE/Framebuffer.h" #include "libANGLE/Framebuffer.h"
#include "libANGLE/FramebufferAttachment.h" #include "libANGLE/FramebufferAttachment.h"
#include "libANGLE/ResourceManager.h" #include "libANGLE/ResourceManager.h"
#include "libANGLE/State.h" #include "libANGLE/State.h"
#include "libANGLE/VertexArray.h" #include "libANGLE/VertexArray.h"
#include "libANGLE/formatutils.h" #include "libANGLE/formatutils.h"
#include "common/utilities.h" #include "libANGLE/renderer/d3d/IndexDataManager.h"
namespace rx namespace rx
{ {
RendererD3D::RendererD3D(egl::Display *display) RendererD3D::RendererD3D(egl::Display *display)
: mDisplay(display) : mDisplay(display),
mDeviceLost(false)
{ {
} }
...@@ -798,4 +800,15 @@ gl::Error RendererD3D::readPixels(const gl::Data &data, GLint x, GLint y, GLsize ...@@ -798,4 +800,15 @@ gl::Error RendererD3D::readPixels(const gl::Data &data, GLint x, GLint y, GLsize
reinterpret_cast<uint8_t*>(pixels)); reinterpret_cast<uint8_t*>(pixels));
} }
bool RendererD3D::isDeviceLost() const
{
return mDeviceLost;
}
void RendererD3D::notifyDeviceLost()
{
mDeviceLost = true;
mDisplay->notifyDeviceLost();
}
} }
...@@ -65,6 +65,8 @@ class RendererD3D : public Renderer ...@@ -65,6 +65,8 @@ class RendererD3D : public Renderer
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
GLbitfield mask, GLenum filter) override; GLbitfield mask, GLenum filter) override;
bool isDeviceLost() const override;
// Direct3D Specific methods // Direct3D Specific methods
virtual SwapChain *createSwapChain(NativeWindow nativeWindow, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) = 0; virtual SwapChain *createSwapChain(NativeWindow nativeWindow, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat) = 0;
...@@ -149,6 +151,8 @@ class RendererD3D : public Renderer ...@@ -149,6 +151,8 @@ class RendererD3D : public Renderer
virtual VertexBuffer *createVertexBuffer() = 0; virtual VertexBuffer *createVertexBuffer() = 0;
virtual IndexBuffer *createIndexBuffer() = 0; virtual IndexBuffer *createIndexBuffer() = 0;
void notifyDeviceLost() override;
protected: protected:
virtual gl::Error drawArrays(GLenum mode, GLsizei count, GLsizei instances, bool transformFeedbackActive) = 0; virtual gl::Error drawArrays(GLenum mode, GLsizei count, GLsizei instances, bool transformFeedbackActive) = 0;
virtual gl::Error drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, virtual gl::Error drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices,
...@@ -162,6 +166,7 @@ class RendererD3D : public Renderer ...@@ -162,6 +166,7 @@ class RendererD3D : public Renderer
void cleanup(); void cleanup();
egl::Display *mDisplay; egl::Display *mDisplay;
bool mDeviceLost;
private: private:
DISALLOW_COPY_AND_ASSIGN(RendererD3D); DISALLOW_COPY_AND_ASSIGN(RendererD3D);
......
...@@ -176,8 +176,6 @@ Renderer11::Renderer11(egl::Display *display, EGLNativeDisplayType hDc, const eg ...@@ -176,8 +176,6 @@ Renderer11::Renderer11(egl::Display *display, EGLNativeDisplayType hDc, const eg
mD3d11Module = NULL; mD3d11Module = NULL;
mDxgiModule = NULL; mDxgiModule = NULL;
mDeviceLost = false;
mDevice = NULL; mDevice = NULL;
mDeviceContext = NULL; mDeviceContext = NULL;
mDxgiAdapter = NULL; mDxgiAdapter = NULL;
...@@ -1818,17 +1816,6 @@ void Renderer11::releaseDeviceResources() ...@@ -1818,17 +1816,6 @@ void Renderer11::releaseDeviceResources()
SafeRelease(mSyncQuery); SafeRelease(mSyncQuery);
} }
void Renderer11::notifyDeviceLost()
{
mDeviceLost = true;
mDisplay->notifyDeviceLost();
}
bool Renderer11::isDeviceLost()
{
return mDeviceLost;
}
// set notify to true to broadcast a message to all contexts of the device loss // set notify to true to broadcast a message to all contexts of the device loss
bool Renderer11::testDeviceLost() bool Renderer11::testDeviceLost()
{ {
......
...@@ -99,8 +99,6 @@ class Renderer11 : public RendererD3D ...@@ -99,8 +99,6 @@ class Renderer11 : public RendererD3D
virtual void markAllStateDirty(); virtual void markAllStateDirty();
// lost device // lost device
void notifyDeviceLost() override;
bool isDeviceLost() override;
bool testDeviceLost() override; bool testDeviceLost() override;
bool testDeviceResettable() override; bool testDeviceResettable() override;
......
...@@ -115,8 +115,6 @@ Renderer9::Renderer9(egl::Display *display, EGLNativeDisplayType hDc, const egl: ...@@ -115,8 +115,6 @@ Renderer9::Renderer9(egl::Display *display, EGLNativeDisplayType hDc, const egl:
mDeviceType = D3DDEVTYPE_HAL; mDeviceType = D3DDEVTYPE_HAL;
#endif #endif
mDeviceLost = false;
mMaskedClearSavedState = NULL; mMaskedClearSavedState = NULL;
mVertexDataManager = NULL; mVertexDataManager = NULL;
...@@ -2151,17 +2149,6 @@ void Renderer9::releaseDeviceResources() ...@@ -2151,17 +2149,6 @@ void Renderer9::releaseDeviceResources()
} }
} }
void Renderer9::notifyDeviceLost()
{
mDeviceLost = true;
mDisplay->notifyDeviceLost();
}
bool Renderer9::isDeviceLost()
{
return mDeviceLost;
}
// set notify to true to broadcast a message to all contexts of the device loss // set notify to true to broadcast a message to all contexts of the device loss
bool Renderer9::testDeviceLost() bool Renderer9::testDeviceLost()
{ {
......
...@@ -100,8 +100,6 @@ class Renderer9 : public RendererD3D ...@@ -100,8 +100,6 @@ class Renderer9 : public RendererD3D
virtual void markAllStateDirty(); virtual void markAllStateDirty();
// lost device // lost device
void notifyDeviceLost() override;
bool isDeviceLost() override;
bool testDeviceLost() override; bool testDeviceLost() override;
bool testDeviceResettable() override; bool testDeviceResettable() override;
......
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