Commit acccc6c9 by Jamie Madill Committed by Commit Bot

Vulkan: Hook up Renderer create functions.

Do this in a separate CL to preserve the renderer generation. BUG=angleproject:1319 Change-Id: I6d5768f199f6aabff747b3708c0625ff78e1ceb0 Reviewed-on: https://chromium-review.googlesource.com/349424Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 07529ff8
...@@ -10,11 +10,29 @@ ...@@ -10,11 +10,29 @@
#include "libANGLE/renderer/vulkan/ContextVk.h" #include "libANGLE/renderer/vulkan/ContextVk.h"
#include "common/debug.h" #include "common/debug.h"
#include "libANGLE/renderer/vulkan/BufferVk.h"
#include "libANGLE/renderer/vulkan/CompilerVk.h"
#include "libANGLE/renderer/vulkan/ContextVk.h"
#include "libANGLE/renderer/vulkan/DeviceVk.h"
#include "libANGLE/renderer/vulkan/FenceNVVk.h"
#include "libANGLE/renderer/vulkan/FenceSyncVk.h"
#include "libANGLE/renderer/vulkan/FramebufferVk.h"
#include "libANGLE/renderer/vulkan/ImageVk.h"
#include "libANGLE/renderer/vulkan/ProgramVk.h"
#include "libANGLE/renderer/vulkan/QueryVk.h"
#include "libANGLE/renderer/vulkan/RenderbufferVk.h"
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/SamplerVk.h"
#include "libANGLE/renderer/vulkan/ShaderVk.h"
#include "libANGLE/renderer/vulkan/TextureVk.h"
#include "libANGLE/renderer/vulkan/TransformFeedbackVk.h"
#include "libANGLE/renderer/vulkan/VertexArrayVk.h"
namespace rx namespace rx
{ {
ContextVk::ContextVk(const gl::ContextState &state) : ContextImpl(state) ContextVk::ContextVk(const gl::ContextState &state, RendererVk *renderer)
: ContextImpl(state), mRenderer(renderer)
{ {
} }
...@@ -162,108 +180,87 @@ void ContextVk::onMakeCurrent(const gl::ContextState &data) ...@@ -162,108 +180,87 @@ void ContextVk::onMakeCurrent(const gl::ContextState &data)
const gl::Caps &ContextVk::getNativeCaps() const const gl::Caps &ContextVk::getNativeCaps() const
{ {
UNIMPLEMENTED(); return mRenderer->getNativeCaps();
static gl::Caps local;
return local;
} }
const gl::TextureCapsMap &ContextVk::getNativeTextureCaps() const const gl::TextureCapsMap &ContextVk::getNativeTextureCaps() const
{ {
UNIMPLEMENTED(); return mRenderer->getNativeTextureCaps();
static gl::TextureCapsMap local;
return local;
} }
const gl::Extensions &ContextVk::getNativeExtensions() const const gl::Extensions &ContextVk::getNativeExtensions() const
{ {
UNIMPLEMENTED(); return mRenderer->getNativeExtensions();
static gl::Extensions local;
return local;
} }
const gl::Limitations &ContextVk::getNativeLimitations() const const gl::Limitations &ContextVk::getNativeLimitations() const
{ {
UNIMPLEMENTED(); return mRenderer->getNativeLimitations();
static gl::Limitations local;
return local;
} }
CompilerImpl *ContextVk::createCompiler() CompilerImpl *ContextVk::createCompiler()
{ {
UNIMPLEMENTED(); return new CompilerVk();
return static_cast<CompilerImpl *>(0);
} }
ShaderImpl *ContextVk::createShader(const gl::ShaderState &data) ShaderImpl *ContextVk::createShader(const gl::ShaderState &state)
{ {
UNIMPLEMENTED(); return new ShaderVk(state);
return static_cast<ShaderImpl *>(0);
} }
ProgramImpl *ContextVk::createProgram(const gl::ProgramState &data) ProgramImpl *ContextVk::createProgram(const gl::ProgramState &state)
{ {
UNIMPLEMENTED(); return new ProgramVk(state);
return static_cast<ProgramImpl *>(0);
} }
FramebufferImpl *ContextVk::createFramebuffer(const gl::FramebufferState &data) FramebufferImpl *ContextVk::createFramebuffer(const gl::FramebufferState &state)
{ {
UNIMPLEMENTED(); return new FramebufferVk(state);
return static_cast<FramebufferImpl *>(0);
} }
TextureImpl *ContextVk::createTexture(const gl::TextureState &state) TextureImpl *ContextVk::createTexture(const gl::TextureState &state)
{ {
UNIMPLEMENTED(); return new TextureVk(state);
return static_cast<TextureImpl *>(0);
} }
RenderbufferImpl *ContextVk::createRenderbuffer() RenderbufferImpl *ContextVk::createRenderbuffer()
{ {
UNIMPLEMENTED(); return new RenderbufferVk();
return static_cast<RenderbufferImpl *>(0);
} }
BufferImpl *ContextVk::createBuffer() BufferImpl *ContextVk::createBuffer()
{ {
UNIMPLEMENTED(); return new BufferVk();
return static_cast<BufferImpl *>(0);
} }
VertexArrayImpl *ContextVk::createVertexArray(const gl::VertexArrayState &data) VertexArrayImpl *ContextVk::createVertexArray(const gl::VertexArrayState &state)
{ {
UNIMPLEMENTED(); return new VertexArrayVk(state);
return static_cast<VertexArrayImpl *>(0);
} }
QueryImpl *ContextVk::createQuery(GLenum type) QueryImpl *ContextVk::createQuery(GLenum type)
{ {
UNIMPLEMENTED(); return new QueryVk(type);
return static_cast<QueryImpl *>(0);
} }
FenceNVImpl *ContextVk::createFenceNV() FenceNVImpl *ContextVk::createFenceNV()
{ {
UNIMPLEMENTED(); return new FenceNVVk();
return static_cast<FenceNVImpl *>(0);
} }
FenceSyncImpl *ContextVk::createFenceSync() FenceSyncImpl *ContextVk::createFenceSync()
{ {
UNIMPLEMENTED(); return new FenceSyncVk();
return static_cast<FenceSyncImpl *>(0);
} }
TransformFeedbackImpl *ContextVk::createTransformFeedback() TransformFeedbackImpl *ContextVk::createTransformFeedback()
{ {
UNIMPLEMENTED(); return new TransformFeedbackVk();
return static_cast<TransformFeedbackImpl *>(0);
} }
SamplerImpl *ContextVk::createSampler() SamplerImpl *ContextVk::createSampler()
{ {
UNIMPLEMENTED(); return new SamplerVk();
return static_cast<SamplerImpl *>(0);
} }
} // namespace rx } // namespace rx
...@@ -14,11 +14,12 @@ ...@@ -14,11 +14,12 @@
namespace rx namespace rx
{ {
class RendererVk;
class ContextVk : public ContextImpl class ContextVk : public ContextImpl
{ {
public: public:
ContextVk(const gl::ContextState &state); ContextVk(const gl::ContextState &state, RendererVk *renderer);
~ContextVk() override; ~ContextVk() override;
gl::Error initialize() override; gl::Error initialize() override;
...@@ -86,11 +87,11 @@ class ContextVk : public ContextImpl ...@@ -86,11 +87,11 @@ class ContextVk : public ContextImpl
// Shader creation // Shader creation
CompilerImpl *createCompiler() override; CompilerImpl *createCompiler() override;
ShaderImpl *createShader(const gl::ShaderState &data) override; ShaderImpl *createShader(const gl::ShaderState &state) override;
ProgramImpl *createProgram(const gl::ProgramState &data) override; ProgramImpl *createProgram(const gl::ProgramState &state) override;
// Framebuffer creation // Framebuffer creation
FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override; FramebufferImpl *createFramebuffer(const gl::FramebufferState &state) override;
// Texture creation // Texture creation
TextureImpl *createTexture(const gl::TextureState &state) override; TextureImpl *createTexture(const gl::TextureState &state) override;
...@@ -102,7 +103,7 @@ class ContextVk : public ContextImpl ...@@ -102,7 +103,7 @@ class ContextVk : public ContextImpl
BufferImpl *createBuffer() override; BufferImpl *createBuffer() override;
// Vertex Array creation // Vertex Array creation
VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override; VertexArrayImpl *createVertexArray(const gl::VertexArrayState &state) override;
// Query and Fence creation // Query and Fence creation
QueryImpl *createQuery(GLenum type) override; QueryImpl *createQuery(GLenum type) override;
...@@ -114,6 +115,9 @@ class ContextVk : public ContextImpl ...@@ -114,6 +115,9 @@ class ContextVk : public ContextImpl
// Sampler object creation // Sampler object creation
SamplerImpl *createSampler() override; SamplerImpl *createSampler() override;
private:
RendererVk *mRenderer;
}; };
} // namespace rx } // namespace rx
......
...@@ -10,11 +10,12 @@ ...@@ -10,11 +10,12 @@
#include "libANGLE/renderer/vulkan/DisplayVk.h" #include "libANGLE/renderer/vulkan/DisplayVk.h"
#include "common/debug.h" #include "common/debug.h"
#include "libANGLE/renderer/vulkan/ContextVk.h"
namespace rx namespace rx
{ {
DisplayVk::DisplayVk() : DisplayImpl() DisplayVk::DisplayVk() : DisplayImpl(), mRenderer(nullptr)
{ {
} }
...@@ -142,8 +143,7 @@ ImageImpl *DisplayVk::createImage(EGLenum target, ...@@ -142,8 +143,7 @@ ImageImpl *DisplayVk::createImage(EGLenum target,
ContextImpl *DisplayVk::createContext(const gl::ContextState &state) ContextImpl *DisplayVk::createContext(const gl::ContextState &state)
{ {
UNIMPLEMENTED(); return new ContextVk(state, mRenderer);
return static_cast<ContextImpl *>(0);
} }
StreamProducerImpl *DisplayVk::createStreamProducerD3DTextureNV12( StreamProducerImpl *DisplayVk::createStreamProducerD3DTextureNV12(
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
namespace rx namespace rx
{ {
class RendererVk;
class DisplayVk : public DisplayImpl class DisplayVk : public DisplayImpl
{ {
...@@ -74,6 +75,8 @@ class DisplayVk : public DisplayImpl ...@@ -74,6 +75,8 @@ class DisplayVk : public DisplayImpl
private: private:
void generateExtensions(egl::DisplayExtensions *outExtensions) const override; void generateExtensions(egl::DisplayExtensions *outExtensions) const override;
void generateCaps(egl::Caps *outCaps) const override; void generateCaps(egl::Caps *outCaps) const override;
RendererVk *mRenderer;
}; };
} // namespace rx } // namespace rx
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
namespace rx namespace rx
{ {
RendererVk::RendererVk() RendererVk::RendererVk() : mCapsInitialized(false)
{ {
} }
...@@ -22,4 +22,45 @@ RendererVk::~RendererVk() ...@@ -22,4 +22,45 @@ RendererVk::~RendererVk()
{ {
} }
void RendererVk::ensureCapsInitialized() const
{
if (!mCapsInitialized)
{
generateCaps(&mNativeCaps, &mNativeTextureCaps, &mNativeExtensions, &mNativeLimitations);
mCapsInitialized = true;
}
}
void RendererVk::generateCaps(gl::Caps * /*outCaps*/,
gl::TextureCapsMap * /*outTextureCaps*/,
gl::Extensions * /*outExtensions*/,
gl::Limitations * /* outLimitations */) const
{
// TODO(jmadill): Caps
}
const gl::Caps &RendererVk::getNativeCaps() const
{
ensureCapsInitialized();
return mNativeCaps;
}
const gl::TextureCapsMap &RendererVk::getNativeTextureCaps() const
{
ensureCapsInitialized();
return mNativeTextureCaps;
}
const gl::Extensions &RendererVk::getNativeExtensions() const
{
ensureCapsInitialized();
return mNativeExtensions;
}
const gl::Limitations &RendererVk::getNativeLimitations() const
{
ensureCapsInitialized();
return mNativeLimitations;
}
} // namespace rx } // namespace rx
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#define LIBANGLE_RENDERER_VULKAN_RENDERERVK_H_ #define LIBANGLE_RENDERER_VULKAN_RENDERERVK_H_
#include "common/angleutils.h" #include "common/angleutils.h"
#include "libANGLE/Caps.h"
namespace rx namespace rx
{ {
...@@ -20,6 +21,24 @@ class RendererVk : angle::NonCopyable ...@@ -20,6 +21,24 @@ class RendererVk : angle::NonCopyable
public: public:
RendererVk(); RendererVk();
~RendererVk(); ~RendererVk();
const gl::Caps &getNativeCaps() const;
const gl::TextureCapsMap &getNativeTextureCaps() const;
const gl::Extensions &getNativeExtensions() const;
const gl::Limitations &getNativeLimitations() const;
private:
void ensureCapsInitialized() const;
void generateCaps(gl::Caps *outCaps,
gl::TextureCapsMap *outTextureCaps,
gl::Extensions *outExtensions,
gl::Limitations *outLimitations) const;
mutable bool mCapsInitialized;
mutable gl::Caps mNativeCaps;
mutable gl::TextureCapsMap mNativeTextureCaps;
mutable gl::Extensions mNativeExtensions;
mutable gl::Limitations mNativeLimitations;
}; };
} // namespace rx } // namespace rx
......
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