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 @@
#include "libANGLE/renderer/vulkan/ContextVk.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
{
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)
const gl::Caps &ContextVk::getNativeCaps() const
{
UNIMPLEMENTED();
static gl::Caps local;
return local;
return mRenderer->getNativeCaps();
}
const gl::TextureCapsMap &ContextVk::getNativeTextureCaps() const
{
UNIMPLEMENTED();
static gl::TextureCapsMap local;
return local;
return mRenderer->getNativeTextureCaps();
}
const gl::Extensions &ContextVk::getNativeExtensions() const
{
UNIMPLEMENTED();
static gl::Extensions local;
return local;
return mRenderer->getNativeExtensions();
}
const gl::Limitations &ContextVk::getNativeLimitations() const
{
UNIMPLEMENTED();
static gl::Limitations local;
return local;
return mRenderer->getNativeLimitations();
}
CompilerImpl *ContextVk::createCompiler()
{
UNIMPLEMENTED();
return static_cast<CompilerImpl *>(0);
return new CompilerVk();
}
ShaderImpl *ContextVk::createShader(const gl::ShaderState &data)
ShaderImpl *ContextVk::createShader(const gl::ShaderState &state)
{
UNIMPLEMENTED();
return static_cast<ShaderImpl *>(0);
return new ShaderVk(state);
}
ProgramImpl *ContextVk::createProgram(const gl::ProgramState &data)
ProgramImpl *ContextVk::createProgram(const gl::ProgramState &state)
{
UNIMPLEMENTED();
return static_cast<ProgramImpl *>(0);
return new ProgramVk(state);
}
FramebufferImpl *ContextVk::createFramebuffer(const gl::FramebufferState &data)
FramebufferImpl *ContextVk::createFramebuffer(const gl::FramebufferState &state)
{
UNIMPLEMENTED();
return static_cast<FramebufferImpl *>(0);
return new FramebufferVk(state);
}
TextureImpl *ContextVk::createTexture(const gl::TextureState &state)
{
UNIMPLEMENTED();
return static_cast<TextureImpl *>(0);
return new TextureVk(state);
}
RenderbufferImpl *ContextVk::createRenderbuffer()
{
UNIMPLEMENTED();
return static_cast<RenderbufferImpl *>(0);
return new RenderbufferVk();
}
BufferImpl *ContextVk::createBuffer()
{
UNIMPLEMENTED();
return static_cast<BufferImpl *>(0);
return new BufferVk();
}
VertexArrayImpl *ContextVk::createVertexArray(const gl::VertexArrayState &data)
VertexArrayImpl *ContextVk::createVertexArray(const gl::VertexArrayState &state)
{
UNIMPLEMENTED();
return static_cast<VertexArrayImpl *>(0);
return new VertexArrayVk(state);
}
QueryImpl *ContextVk::createQuery(GLenum type)
{
UNIMPLEMENTED();
return static_cast<QueryImpl *>(0);
return new QueryVk(type);
}
FenceNVImpl *ContextVk::createFenceNV()
{
UNIMPLEMENTED();
return static_cast<FenceNVImpl *>(0);
return new FenceNVVk();
}
FenceSyncImpl *ContextVk::createFenceSync()
{
UNIMPLEMENTED();
return static_cast<FenceSyncImpl *>(0);
return new FenceSyncVk();
}
TransformFeedbackImpl *ContextVk::createTransformFeedback()
{
UNIMPLEMENTED();
return static_cast<TransformFeedbackImpl *>(0);
return new TransformFeedbackVk();
}
SamplerImpl *ContextVk::createSampler()
{
UNIMPLEMENTED();
return static_cast<SamplerImpl *>(0);
return new SamplerVk();
}
} // namespace rx
......@@ -14,11 +14,12 @@
namespace rx
{
class RendererVk;
class ContextVk : public ContextImpl
{
public:
ContextVk(const gl::ContextState &state);
ContextVk(const gl::ContextState &state, RendererVk *renderer);
~ContextVk() override;
gl::Error initialize() override;
......@@ -86,11 +87,11 @@ class ContextVk : public ContextImpl
// Shader creation
CompilerImpl *createCompiler() override;
ShaderImpl *createShader(const gl::ShaderState &data) override;
ProgramImpl *createProgram(const gl::ProgramState &data) override;
ShaderImpl *createShader(const gl::ShaderState &state) override;
ProgramImpl *createProgram(const gl::ProgramState &state) override;
// Framebuffer creation
FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override;
FramebufferImpl *createFramebuffer(const gl::FramebufferState &state) override;
// Texture creation
TextureImpl *createTexture(const gl::TextureState &state) override;
......@@ -102,7 +103,7 @@ class ContextVk : public ContextImpl
BufferImpl *createBuffer() override;
// Vertex Array creation
VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override;
VertexArrayImpl *createVertexArray(const gl::VertexArrayState &state) override;
// Query and Fence creation
QueryImpl *createQuery(GLenum type) override;
......@@ -114,6 +115,9 @@ class ContextVk : public ContextImpl
// Sampler object creation
SamplerImpl *createSampler() override;
private:
RendererVk *mRenderer;
};
} // namespace rx
......
......@@ -10,11 +10,12 @@
#include "libANGLE/renderer/vulkan/DisplayVk.h"
#include "common/debug.h"
#include "libANGLE/renderer/vulkan/ContextVk.h"
namespace rx
{
DisplayVk::DisplayVk() : DisplayImpl()
DisplayVk::DisplayVk() : DisplayImpl(), mRenderer(nullptr)
{
}
......@@ -142,8 +143,7 @@ ImageImpl *DisplayVk::createImage(EGLenum target,
ContextImpl *DisplayVk::createContext(const gl::ContextState &state)
{
UNIMPLEMENTED();
return static_cast<ContextImpl *>(0);
return new ContextVk(state, mRenderer);
}
StreamProducerImpl *DisplayVk::createStreamProducerD3DTextureNV12(
......
......@@ -14,6 +14,7 @@
namespace rx
{
class RendererVk;
class DisplayVk : public DisplayImpl
{
......@@ -74,6 +75,8 @@ class DisplayVk : public DisplayImpl
private:
void generateExtensions(egl::DisplayExtensions *outExtensions) const override;
void generateCaps(egl::Caps *outCaps) const override;
RendererVk *mRenderer;
};
} // namespace rx
......
......@@ -14,7 +14,7 @@
namespace rx
{
RendererVk::RendererVk()
RendererVk::RendererVk() : mCapsInitialized(false)
{
}
......@@ -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
......@@ -11,6 +11,7 @@
#define LIBANGLE_RENDERER_VULKAN_RENDERERVK_H_
#include "common/angleutils.h"
#include "libANGLE/Caps.h"
namespace rx
{
......@@ -20,6 +21,24 @@ class RendererVk : angle::NonCopyable
public:
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
......
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