summaryrefslogtreecommitdiff
path: root/chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-07-14 17:41:05 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-08-04 12:37:36 +0000
commit399c965b6064c440ddcf4015f5f8e9d131c7a0a6 (patch)
tree6b06b60ff365abef0e13b3503d593a0df48d20e8 /chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h
parent7366110654eec46f21b6824f302356426f48cd74 (diff)
downloadqtwebengine-chromium-399c965b6064c440ddcf4015f5f8e9d131c7a0a6.tar.gz
BASELINE: Update Chromium to 52.0.2743.76 and Ninja to 1.7.1
Change-Id: I382f51b959689505a60f8b707255ecb344f7d8b4 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h')
-rw-r--r--chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h171
1 files changed, 73 insertions, 98 deletions
diff --git a/chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h b/chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h
index b21c7e85cbf..c227e254b16 100644
--- a/chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h
+++ b/chromium/third_party/angle/src/libANGLE/renderer/d3d/RendererD3D.h
@@ -11,14 +11,12 @@
#include "common/debug.h"
#include "common/MemoryBuffer.h"
-#include "libANGLE/Data.h"
+#include "libANGLE/ContextState.h"
#include "libANGLE/Device.h"
#include "libANGLE/formatutils.h"
-#include "libANGLE/renderer/Renderer.h"
#include "libANGLE/renderer/d3d/VertexDataManager.h"
#include "libANGLE/renderer/d3d/formatutilsD3D.h"
#include "libANGLE/renderer/d3d/WorkaroundsD3D.h"
-#include "libANGLE/renderer/d3d/d3d11/NativeWindow.h"
//FIXME(jmadill): std::array is currently prohibited by Chromium style guide
#include <array>
@@ -31,6 +29,7 @@ class ConfigSet;
namespace gl
{
class DebugAnnotator;
+class FramebufferState;
class InfoLog;
class Texture;
struct LinkedVarying;
@@ -38,17 +37,21 @@ struct LinkedVarying;
namespace rx
{
+class ContextImpl;
struct D3DUniform;
struct D3DVarying;
class DeviceD3D;
class EGLImageD3D;
+class FramebufferImpl;
class ImageD3D;
class IndexBuffer;
+class NativeWindowD3D;
class ProgramD3D;
class RenderTargetD3D;
class ShaderExecutableD3D;
class SwapChainD3D;
class TextureStorage;
+struct TranslatedIndexData;
class UniformStorageD3D;
class VertexBuffer;
@@ -76,7 +79,7 @@ enum RendererClass
};
// Useful for unit testing
-class BufferFactoryD3D
+class BufferFactoryD3D : angle::NonCopyable
{
public:
BufferFactoryD3D() {}
@@ -96,7 +99,7 @@ class BufferFactoryD3D
using AttribIndexArray = std::array<int, gl::MAX_VERTEX_ATTRIBS>;
-class RendererD3D : public Renderer, public BufferFactoryD3D
+class RendererD3D : public BufferFactoryD3D
{
public:
explicit RendererD3D(egl::Display *display);
@@ -107,39 +110,11 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
virtual egl::ConfigSet generateConfigs() const = 0;
virtual void generateDisplayExtensions(egl::DisplayExtensions *outExtensions) const = 0;
- gl::Error drawArrays(const gl::Data &data, GLenum mode, GLint first, GLsizei count) override;
- gl::Error drawArraysInstanced(const gl::Data &data,
- GLenum mode,
- GLint first,
- GLsizei count,
- GLsizei instanceCount) override;
-
- gl::Error drawElements(const gl::Data &data,
- GLenum mode,
- GLsizei count,
- GLenum type,
- const GLvoid *indices,
- const gl::IndexRange &indexRange) override;
- gl::Error drawElementsInstanced(const gl::Data &data,
- GLenum mode,
- GLsizei count,
- GLenum type,
- const GLvoid *indices,
- GLsizei instances,
- const gl::IndexRange &indexRange) override;
- gl::Error drawRangeElements(const gl::Data &data,
- GLenum mode,
- GLuint start,
- GLuint end,
- GLsizei count,
- GLenum type,
- const GLvoid *indices,
- const gl::IndexRange &indexRange) override;
-
- bool isDeviceLost() const override;
- std::string getVendorString() const override;
-
- SamplerImpl *createSampler() override;
+ virtual ContextImpl *createContext(const gl::ContextState &state) = 0;
+
+ bool isDeviceLost() const;
+ virtual bool testDeviceLost() = 0;
+ std::string getVendorString() const;
virtual int getMinorShaderModel() const = 0;
virtual std::string getShaderModelSuffix() const = 0;
@@ -147,7 +122,12 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
// Direct3D Specific methods
virtual DeviceIdentifier getAdapterIdentifier() const = 0;
- virtual SwapChainD3D *createSwapChain(NativeWindow nativeWindow,
+ virtual bool isValidNativeWindow(EGLNativeWindowType window) const = 0;
+ virtual NativeWindowD3D *createNativeWindow(EGLNativeWindowType window,
+ const egl::Config *config,
+ const egl::AttributeMap &attribs) const = 0;
+
+ virtual SwapChainD3D *createSwapChain(NativeWindowD3D *nativeWindow,
HANDLE shareHandle,
GLenum backBufferFormat,
GLenum depthBufferFormat,
@@ -157,30 +137,13 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
virtual gl::Error setSamplerState(gl::SamplerType type, int index, gl::Texture *texture, const gl::SamplerState &sampler) = 0;
virtual gl::Error setTexture(gl::SamplerType type, int index, gl::Texture *texture) = 0;
- virtual gl::Error setUniformBuffers(const gl::Data &data,
+ virtual gl::Error setUniformBuffers(const gl::ContextState &data,
const std::vector<GLint> &vertexUniformBuffers,
const std::vector<GLint> &fragmentUniformBuffers) = 0;
- virtual gl::Error updateState(const gl::Data &data, GLenum drawMode) = 0;
-
- virtual gl::Error applyRenderTarget(const gl::Framebuffer *frameBuffer) = 0;
virtual gl::Error applyUniforms(const ProgramD3D &programD3D,
GLenum drawMode,
const std::vector<D3DUniform *> &uniformArray) = 0;
- virtual bool applyPrimitiveType(GLenum primitiveType, GLsizei elementCount, bool usesPointSize) = 0;
- virtual gl::Error applyVertexBuffer(const gl::State &state,
- GLenum mode,
- GLint first,
- GLsizei count,
- GLsizei instances,
- TranslatedIndexData *indexInfo) = 0;
- virtual gl::Error applyIndexBuffer(const gl::Data &data,
- const GLvoid *indices,
- GLsizei count,
- GLenum mode,
- GLenum type,
- TranslatedIndexData *indexInfo) = 0;
- virtual gl::Error applyTransformFeedbackBuffers(const gl::State &state) = 0;
virtual unsigned int getReservedVertexUniformVectors() const = 0;
virtual unsigned int getReservedFragmentUniformVectors() const = 0;
@@ -228,6 +191,9 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
const gl::TextureState &textureState) = 0;
virtual TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) = 0;
virtual TextureStorage *createTextureStorageEGLImage(EGLImageD3D *eglImage) = 0;
+ virtual TextureStorage *createTextureStorageExternal(
+ egl::Stream *stream,
+ const egl::Stream::GLTextureDescription &desc) = 0;
virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly) = 0;
virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels, bool hintLevelZeroOnly) = 0;
virtual TextureStorage *createTextureStorage3D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, GLsizei depth, int levels) = 0;
@@ -239,7 +205,7 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
GLenum destinationFormat, GLenum sourcePixelsType, const gl::Box &destArea) = 0;
// Device lost
- void notifyDeviceLost() override;
+ void notifyDeviceLost();
virtual bool resetDevice() = 0;
virtual RendererClass getRendererClass() const = 0;
virtual void *getD3DDevice() = 0;
@@ -247,16 +213,14 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
gl::Error getScratchMemoryBuffer(size_t requestedSize, MemoryBuffer **bufferOut);
// EXT_debug_marker
- void insertEventMarker(GLsizei length, const char *marker) override;
- void pushGroupMarker(GLsizei length, const char *marker) override;
- void popGroupMarker() override;
+ void insertEventMarker(GLsizei length, const char *marker);
+ void pushGroupMarker(GLsizei length, const char *marker);
+ void popGroupMarker();
void setGPUDisjoint();
- GLint getGPUDisjoint() override;
- GLint64 getTimestamp() override;
-
- void onMakeCurrent(const gl::Data &data) override;
+ GLint getGPUDisjoint();
+ GLint64 getTimestamp();
// In D3D11, faster than calling setTexture a jillion times
virtual gl::Error clearTextures(gl::SamplerType samplerType, size_t rangeStart, size_t rangeEnd) = 0;
@@ -266,19 +230,39 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
bool presentPathFastEnabled() const { return mPresentPathFastEnabled; }
// Stream creation
- virtual StreamImpl *createStream(const egl::AttributeMap &attribs) = 0;
+ virtual StreamProducerImpl *createStreamProducerD3DTextureNV12(
+ egl::Stream::ConsumerType consumerType,
+ const egl::AttributeMap &attribs) = 0;
+
+ const gl::Caps &getNativeCaps() const;
+ const gl::TextureCapsMap &getNativeTextureCaps() const;
+ const gl::Extensions &getNativeExtensions() const;
+ const gl::Limitations &getNativeLimitations() const;
+
+ // Necessary hack for default framebuffers in D3D.
+ virtual FramebufferImpl *createDefaultFramebuffer(const gl::FramebufferState &state) = 0;
protected:
virtual bool getLUID(LUID *adapterLuid) const = 0;
- virtual gl::Error applyShadersImpl(const gl::Data &data, GLenum drawMode) = 0;
+ virtual gl::Error applyShadersImpl(const gl::ContextState &data, GLenum drawMode) = 0;
+ virtual void generateCaps(gl::Caps *outCaps,
+ gl::TextureCapsMap *outTextureCaps,
+ gl::Extensions *outExtensions,
+ gl::Limitations *outLimitations) const = 0;
void cleanup();
virtual void createAnnotator() = 0;
- static unsigned int GetBlendSampleMask(const gl::Data &data, int samples);
+ static unsigned int GetBlendSampleMask(const gl::ContextState &data, int samples);
// dirtyPointer is a special value that will make the comparison with any valid pointer fail and force the renderer to re-apply the state.
+ gl::Error generateSwizzles(const gl::ContextState &data);
+ gl::Error applyShaders(const gl::ContextState &data, GLenum drawMode);
+ gl::Error applyTextures(GLImplFactory *implFactory, const gl::ContextState &data);
+ bool skipDraw(const gl::ContextState &data, GLenum drawMode);
+ gl::Error markTransformFeedbackUsage(const gl::ContextState &data);
+
egl::Display *mDisplay;
bool mDeviceLost;
@@ -288,26 +272,14 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
bool mPresentPathFastEnabled;
private:
- gl::Error genericDrawArrays(const gl::Data &data,
- GLenum mode,
- GLint first,
- GLsizei count,
- GLsizei instances);
-
- gl::Error genericDrawElements(const gl::Data &data,
- GLenum mode,
- GLsizei count,
- GLenum type,
- const GLvoid *indices,
- GLsizei instances,
- const gl::IndexRange &indexRange);
-
- virtual gl::Error drawArraysImpl(const gl::Data &data,
+ void ensureCapsInitialized() const;
+
+ virtual gl::Error drawArraysImpl(const gl::ContextState &data,
GLenum mode,
GLint startVertex,
GLsizei count,
GLsizei instances) = 0;
- virtual gl::Error drawElementsImpl(const gl::Data &data,
+ virtual gl::Error drawElementsImpl(const gl::ContextState &data,
const TranslatedIndexData &indexInfo,
GLenum mode,
GLsizei count,
@@ -315,28 +287,31 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
const GLvoid *indices,
GLsizei instances) = 0;
- //FIXME(jmadill): std::array is currently prohibited by Chromium style guide
typedef std::array<gl::Texture*, gl::IMPLEMENTATION_MAX_FRAMEBUFFER_ATTACHMENTS> FramebufferTextureArray;
- gl::Error generateSwizzles(const gl::Data &data, gl::SamplerType type);
- gl::Error generateSwizzles(const gl::Data &data);
+ gl::Error generateSwizzles(const gl::ContextState &data, gl::SamplerType type);
- gl::Error applyState(const gl::Data &data, GLenum drawMode);
- gl::Error applyShaders(const gl::Data &data, GLenum drawMode);
- gl::Error applyTextures(const gl::Data &data, gl::SamplerType shaderType,
- const FramebufferTextureArray &framebufferTextures, size_t framebufferTextureCount);
- gl::Error applyTextures(const gl::Data &data);
+ gl::Error applyState(const gl::ContextState &data, GLenum drawMode);
+ gl::Error applyTextures(GLImplFactory *implFactory,
+ const gl::ContextState &data,
+ gl::SamplerType shaderType,
+ const FramebufferTextureArray &framebufferTextures,
+ size_t framebufferTextureCount);
- bool skipDraw(const gl::Data &data, GLenum drawMode);
- gl::Error markTransformFeedbackUsage(const gl::Data &data);
-
- size_t getBoundFramebufferTextures(const gl::Data &data, FramebufferTextureArray *outTextureArray);
- gl::Texture *getIncompleteTexture(GLenum type);
+ size_t getBoundFramebufferTextures(const gl::ContextState &data,
+ FramebufferTextureArray *outTextureArray);
+ gl::Texture *getIncompleteTexture(GLImplFactory *implFactory, GLenum type);
gl::DebugAnnotator *getAnnotator();
virtual WorkaroundsD3D generateWorkarounds() const = 0;
+ mutable bool mCapsInitialized;
+ mutable gl::Caps mNativeCaps;
+ mutable gl::TextureCapsMap mNativeTextureCaps;
+ mutable gl::Extensions mNativeExtensions;
+ mutable gl::Limitations mNativeLimitations;
+
gl::TextureMap mIncompleteTextures;
MemoryBuffer mScratchMemoryBuffer;
unsigned int mScratchMemoryBufferResetCounter;
@@ -347,6 +322,6 @@ class RendererD3D : public Renderer, public BufferFactoryD3D
bool mDisjoint;
};
-}
+} // namespace rx
#endif // LIBANGLE_RENDERER_D3D_RENDERERD3D_H_