Commit 9236b418 by Jamie Madill

Add generic Impl casting helper methods.

GetAs and GetImplAs are template helpers that can replace all of our custom "makeTextureD3D", etc methods. This will help save code across different back-ends. Change-Id: Ib3215c005bfac5a819c5d8f7d60a73a725241332 Reviewed-on: https://chromium-review.googlesource.com/245390Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 31018486
...@@ -267,6 +267,34 @@ enum VendorID : uint32_t ...@@ -267,6 +267,34 @@ enum VendorID : uint32_t
VENDOR_ID_NVIDIA = 0x10DE, VENDOR_ID_NVIDIA = 0x10DE,
}; };
// Downcast a base implementation object (EG TextureImpl to TextureD3D)
template <typename DestT, typename SrcT>
inline DestT *GetAs(SrcT *src)
{
ASSERT(HAS_DYNAMIC_TYPE(DestT*, src));
return static_cast<DestT*>(src);
}
template <typename DestT, typename SrcT>
inline const DestT *GetAs(const SrcT *src)
{
ASSERT(HAS_DYNAMIC_TYPE(const DestT*, src));
return static_cast<const DestT*>(src);
}
// Downcast a GL object to an Impl (EG gl::Texture to rx::TextureD3D)
template <typename DestT, typename SrcT>
inline DestT *GetImplAs(SrcT *src)
{
return GetAs<DestT>(src->getImplementation());
}
template <typename DestT, typename SrcT>
inline const DestT *GetImplAs(const SrcT *src)
{
return GetAs<const DestT>(src->getImplementation());
}
} }
#endif // LIBANGLE_ANGLETYPES_H_ #endif // LIBANGLE_ANGLETYPES_H_
...@@ -29,19 +29,6 @@ BufferD3D::~BufferD3D() ...@@ -29,19 +29,6 @@ BufferD3D::~BufferD3D()
SafeDelete(mStaticIndexBuffer); SafeDelete(mStaticIndexBuffer);
} }
BufferD3D *BufferD3D::makeBufferD3D(BufferImpl *buffer)
{
ASSERT(HAS_DYNAMIC_TYPE(BufferD3D*, buffer));
return static_cast<BufferD3D*>(buffer);
}
BufferD3D *BufferD3D::makeFromBuffer(gl::Buffer *buffer)
{
BufferImpl *impl = buffer->getImplementation();
ASSERT(impl);
return makeBufferD3D(impl);
}
void BufferD3D::updateSerial() void BufferD3D::updateSerial()
{ {
mSerial = mNextSerial++; mSerial = mNextSerial++;
......
...@@ -26,9 +26,6 @@ class BufferD3D : public BufferImpl ...@@ -26,9 +26,6 @@ class BufferD3D : public BufferImpl
BufferD3D(); BufferD3D();
virtual ~BufferD3D(); virtual ~BufferD3D();
static BufferD3D *makeBufferD3D(BufferImpl *buffer);
static BufferD3D *makeFromBuffer(gl::Buffer *buffer);
unsigned int getSerial() const { return mSerial; } unsigned int getSerial() const { return mSerial; }
virtual size_t getSize() const = 0; virtual size_t getSize() const = 0;
......
...@@ -51,7 +51,7 @@ egl::Error DisplayD3D::restoreLostDevice() ...@@ -51,7 +51,7 @@ egl::Error DisplayD3D::restoreLostDevice()
{ {
surface->releaseTexImage(EGL_BACK_BUFFER); surface->releaseTexImage(EGL_BACK_BUFFER);
} }
SurfaceD3D *surfaceD3D = SurfaceD3D::makeSurfaceD3D(surface); SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
surfaceD3D->releaseSwapChain(); surfaceD3D->releaseSwapChain();
} }
...@@ -63,7 +63,7 @@ egl::Error DisplayD3D::restoreLostDevice() ...@@ -63,7 +63,7 @@ egl::Error DisplayD3D::restoreLostDevice()
// Restore any surfaces that may have been lost // Restore any surfaces that may have been lost
for (const auto &surface : mSurfaceSet) for (const auto &surface : mSurfaceSet)
{ {
SurfaceD3D *surfaceD3D = SurfaceD3D::makeSurfaceD3D(surface); SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
egl::Error error = surfaceD3D->resetSwapChain(); egl::Error error = surfaceD3D->resetSwapChain();
if (error.isError()) if (error.isError())
......
...@@ -333,7 +333,7 @@ gl::Error GetAttachmentRenderTarget(const gl::FramebufferAttachment *attachment, ...@@ -333,7 +333,7 @@ gl::Error GetAttachmentRenderTarget(const gl::FramebufferAttachment *attachment,
{ {
gl::Texture *texture = attachment->getTexture(); gl::Texture *texture = attachment->getTexture();
ASSERT(texture); ASSERT(texture);
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
const gl::ImageIndex *index = attachment->getTextureImageIndex(); const gl::ImageIndex *index = attachment->getTextureImageIndex();
ASSERT(index); ASSERT(index);
return textureD3D->getRenderTarget(*index, outRT); return textureD3D->getRenderTarget(*index, outRT);
...@@ -369,7 +369,7 @@ unsigned int GetAttachmentSerial(const gl::FramebufferAttachment *attachment) ...@@ -369,7 +369,7 @@ unsigned int GetAttachmentSerial(const gl::FramebufferAttachment *attachment)
{ {
gl::Texture *texture = attachment->getTexture(); gl::Texture *texture = attachment->getTexture();
ASSERT(texture); ASSERT(texture);
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
const gl::ImageIndex *index = attachment->getTextureImageIndex(); const gl::ImageIndex *index = attachment->getTextureImageIndex();
ASSERT(index); ASSERT(index);
return textureD3D->getRenderTargetSerial(*index); return textureD3D->getRenderTargetSerial(*index);
......
...@@ -84,7 +84,7 @@ gl::Error IndexDataManager::prepareIndexData(GLenum type, GLsizei count, gl::Buf ...@@ -84,7 +84,7 @@ gl::Error IndexDataManager::prepareIndexData(GLenum type, GLsizei count, gl::Buf
{ {
offset = static_cast<unsigned int>(reinterpret_cast<uintptr_t>(indices)); offset = static_cast<unsigned int>(reinterpret_cast<uintptr_t>(indices));
storage = BufferD3D::makeBufferD3D(buffer->getImplementation()); storage = GetImplAs<BufferD3D>(buffer);
switch (type) switch (type)
{ {
......
...@@ -201,18 +201,6 @@ ProgramD3D::~ProgramD3D() ...@@ -201,18 +201,6 @@ ProgramD3D::~ProgramD3D()
SafeDelete(mDynamicHLSL); SafeDelete(mDynamicHLSL);
} }
ProgramD3D *ProgramD3D::makeProgramD3D(ProgramImpl *impl)
{
ASSERT(HAS_DYNAMIC_TYPE(ProgramD3D*, impl));
return static_cast<ProgramD3D*>(impl);
}
const ProgramD3D *ProgramD3D::makeProgramD3D(const ProgramImpl *impl)
{
ASSERT(HAS_DYNAMIC_TYPE(const ProgramD3D*, impl));
return static_cast<const ProgramD3D*>(impl);
}
bool ProgramD3D::usesPointSpriteEmulation() const bool ProgramD3D::usesPointSpriteEmulation() const
{ {
return mUsesPointSize && mRenderer->getMajorShaderModel() >= 4; return mUsesPointSize && mRenderer->getMajorShaderModel() >= 4;
......
...@@ -42,9 +42,6 @@ class ProgramD3D : public ProgramImpl ...@@ -42,9 +42,6 @@ class ProgramD3D : public ProgramImpl
ProgramD3D(RendererD3D *renderer); ProgramD3D(RendererD3D *renderer);
virtual ~ProgramD3D(); virtual ~ProgramD3D();
static ProgramD3D *makeProgramD3D(ProgramImpl *impl);
static const ProgramD3D *makeProgramD3D(const ProgramImpl *impl);
const std::vector<PixelShaderOutputVariable> &getPixelShaderKey() { return mPixelShaderKey; } const std::vector<PixelShaderOutputVariable> &getPixelShaderKey() { return mPixelShaderKey; }
int getShaderVersion() const { return mShaderVersion; } int getShaderVersion() const { return mShaderVersion; }
GLenum getTransformFeedbackBufferMode() const { return mTransformFeedbackBufferMode; } GLenum getTransformFeedbackBufferMode() const { return mTransformFeedbackBufferMode; }
......
...@@ -20,19 +20,6 @@ ...@@ -20,19 +20,6 @@
namespace rx namespace rx
{ {
//static
SurfaceD3D *SurfaceD3D::makeSurfaceD3D(SurfaceImpl *impl)
{
ASSERT(HAS_DYNAMIC_TYPE(SurfaceD3D*, impl));
return static_cast<SurfaceD3D*>(impl);
}
//static
SurfaceD3D *SurfaceD3D::makeSurfaceD3D(egl::Surface *surface)
{
return makeSurfaceD3D(surface->getImplementation());
}
SurfaceD3D *SurfaceD3D::createOffscreen(egl::Display *display, const egl::Config *config, EGLClientBuffer shareHandle, SurfaceD3D *SurfaceD3D::createOffscreen(egl::Display *display, const egl::Config *config, EGLClientBuffer shareHandle,
EGLint width, EGLint height, EGLenum textureFormat, EGLenum textureType) EGLint width, EGLint height, EGLenum textureFormat, EGLenum textureType)
{ {
......
...@@ -34,9 +34,6 @@ class SurfaceD3D : public SurfaceImpl ...@@ -34,9 +34,6 @@ class SurfaceD3D : public SurfaceImpl
~SurfaceD3D() override; ~SurfaceD3D() override;
void releaseSwapChain(); void releaseSwapChain();
static SurfaceD3D *makeSurfaceD3D(SurfaceImpl *impl);
static SurfaceD3D *makeSurfaceD3D(egl::Surface *surface);
egl::Error initialize() override; egl::Error initialize() override;
egl::Error swap() override; egl::Error swap() override;
egl::Error postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height) override; egl::Error postSubBuffer(EGLint x, EGLint y, EGLint width, EGLint height) override;
......
...@@ -40,7 +40,7 @@ gl::Error GetUnpackPointer(const gl::PixelUnpackState &unpack, const uint8_t *pi ...@@ -40,7 +40,7 @@ gl::Error GetUnpackPointer(const gl::PixelUnpackState &unpack, const uint8_t *pi
// TODO: this is the only place outside of renderer that asks for a buffers raw data. // TODO: this is the only place outside of renderer that asks for a buffers raw data.
// This functionality should be moved into renderer and the getData method of BufferImpl removed. // This functionality should be moved into renderer and the getData method of BufferImpl removed.
BufferD3D *bufferD3D = BufferD3D::makeBufferD3D(pixelBuffer->getImplementation()); BufferD3D *bufferD3D = GetImplAs<BufferD3D>(pixelBuffer);
ASSERT(bufferD3D); ASSERT(bufferD3D);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
gl::Error error = bufferD3D->getData(&bufferData); gl::Error error = bufferD3D->getData(&bufferData);
...@@ -85,12 +85,6 @@ TextureD3D::~TextureD3D() ...@@ -85,12 +85,6 @@ TextureD3D::~TextureD3D()
{ {
} }
TextureD3D *TextureD3D::makeTextureD3D(TextureImpl *texture)
{
ASSERT(HAS_DYNAMIC_TYPE(TextureD3D*, texture));
return static_cast<TextureD3D*>(texture);
}
TextureStorage *TextureD3D::getNativeTexture() TextureStorage *TextureD3D::getNativeTexture()
{ {
// ensure the underlying texture is created // ensure the underlying texture is created
...@@ -868,7 +862,7 @@ void TextureD3D_2D::bindTexImage(egl::Surface *surface) ...@@ -868,7 +862,7 @@ void TextureD3D_2D::bindTexImage(egl::Surface *surface)
SafeDelete(mTexStorage); SafeDelete(mTexStorage);
} }
SurfaceD3D *surfaceD3D = SurfaceD3D::makeSurfaceD3D(surface); SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
ASSERT(surfaceD3D); ASSERT(surfaceD3D);
mTexStorage = mRenderer->createTextureStorage2D(surfaceD3D->getSwapChain()); mTexStorage = mRenderer->createTextureStorage2D(surfaceD3D->getSwapChain());
......
...@@ -33,8 +33,6 @@ class TextureD3D : public TextureImpl ...@@ -33,8 +33,6 @@ class TextureD3D : public TextureImpl
TextureD3D(RendererD3D *renderer); TextureD3D(RendererD3D *renderer);
virtual ~TextureD3D(); virtual ~TextureD3D();
static TextureD3D *makeTextureD3D(TextureImpl *texture);
TextureStorage *getNativeTexture(); TextureStorage *getNativeTexture();
virtual void setUsage(GLenum usage) { mUsage = usage; } virtual void setUsage(GLenum usage) { mUsage = usage; }
......
...@@ -167,7 +167,7 @@ bool VertexBufferInterface::directStoragePossible(const gl::VertexAttribute &att ...@@ -167,7 +167,7 @@ bool VertexBufferInterface::directStoragePossible(const gl::VertexAttribute &att
const gl::VertexAttribCurrentValueData &currentValue) const const gl::VertexAttribCurrentValueData &currentValue) const
{ {
gl::Buffer *buffer = attrib.buffer.get(); gl::Buffer *buffer = attrib.buffer.get();
BufferD3D *storage = buffer ? BufferD3D::makeBufferD3D(buffer->getImplementation()) : NULL; BufferD3D *storage = buffer ? GetImplAs<BufferD3D>(buffer) : NULL;
if (!storage || !storage->supportsDirectBinding()) if (!storage || !storage->supportsDirectBinding())
{ {
......
...@@ -95,7 +95,7 @@ void VertexDataManager::hintUnmapAllResources(const gl::State &state) ...@@ -95,7 +95,7 @@ void VertexDataManager::hintUnmapAllResources(const gl::State &state)
if (attrib.enabled) if (attrib.enabled)
{ {
gl::Buffer *buffer = attrib.buffer.get(); gl::Buffer *buffer = attrib.buffer.get();
BufferD3D *storage = buffer ? BufferD3D::makeBufferD3D(buffer->getImplementation()) : NULL; BufferD3D *storage = buffer ? GetImplAs<BufferD3D>(buffer) : NULL;
StaticVertexBufferInterface *staticBuffer = storage ? storage->getStaticVertexBuffer() : NULL; StaticVertexBufferInterface *staticBuffer = storage ? storage->getStaticVertexBuffer() : NULL;
if (staticBuffer) if (staticBuffer)
...@@ -196,7 +196,7 @@ gl::Error VertexDataManager::prepareVertexData(const gl::State &state, GLint sta ...@@ -196,7 +196,7 @@ gl::Error VertexDataManager::prepareVertexData(const gl::State &state, GLint sta
if (buffer) if (buffer)
{ {
BufferD3D *bufferImpl = BufferD3D::makeBufferD3D(buffer->getImplementation()); BufferD3D *bufferImpl = GetImplAs<BufferD3D>(buffer);
bufferImpl->promoteStaticUsage(count * ComputeVertexAttributeTypeSize(curAttrib)); bufferImpl->promoteStaticUsage(count * ComputeVertexAttributeTypeSize(curAttrib));
} }
} }
...@@ -212,7 +212,7 @@ void VertexDataManager::invalidateMatchingStaticData(const gl::VertexAttribute & ...@@ -212,7 +212,7 @@ void VertexDataManager::invalidateMatchingStaticData(const gl::VertexAttribute &
if (buffer) if (buffer)
{ {
BufferD3D *bufferImpl = BufferD3D::makeBufferD3D(buffer->getImplementation()); BufferD3D *bufferImpl = GetImplAs<BufferD3D>(buffer);
StaticVertexBufferInterface *staticBuffer = bufferImpl->getStaticVertexBuffer(); StaticVertexBufferInterface *staticBuffer = bufferImpl->getStaticVertexBuffer();
if (staticBuffer && if (staticBuffer &&
...@@ -231,7 +231,7 @@ gl::Error VertexDataManager::reserveSpaceForAttrib(const gl::VertexAttribute &at ...@@ -231,7 +231,7 @@ gl::Error VertexDataManager::reserveSpaceForAttrib(const gl::VertexAttribute &at
GLsizei instances) const GLsizei instances) const
{ {
gl::Buffer *buffer = attrib.buffer.get(); gl::Buffer *buffer = attrib.buffer.get();
BufferD3D *bufferImpl = buffer ? BufferD3D::makeBufferD3D(buffer->getImplementation()) : NULL; BufferD3D *bufferImpl = buffer ? GetImplAs<BufferD3D>(buffer) : NULL;
StaticVertexBufferInterface *staticBuffer = bufferImpl ? bufferImpl->getStaticVertexBuffer() : NULL; StaticVertexBufferInterface *staticBuffer = bufferImpl ? bufferImpl->getStaticVertexBuffer() : NULL;
VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast<VertexBufferInterface*>(mStreamingBuffer); VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast<VertexBufferInterface*>(mStreamingBuffer);
...@@ -275,7 +275,7 @@ gl::Error VertexDataManager::storeAttribute(const gl::VertexAttribute &attrib, ...@@ -275,7 +275,7 @@ gl::Error VertexDataManager::storeAttribute(const gl::VertexAttribute &attrib,
gl::Buffer *buffer = attrib.buffer.get(); gl::Buffer *buffer = attrib.buffer.get();
ASSERT(buffer || attrib.pointer); ASSERT(buffer || attrib.pointer);
BufferD3D *storage = buffer ? BufferD3D::makeBufferD3D(buffer->getImplementation()) : NULL; BufferD3D *storage = buffer ? GetImplAs<BufferD3D>(buffer) : NULL;
StaticVertexBufferInterface *staticBuffer = storage ? storage->getStaticVertexBuffer() : NULL; StaticVertexBufferInterface *staticBuffer = storage ? storage->getStaticVertexBuffer() : NULL;
VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast<VertexBufferInterface*>(mStreamingBuffer); VertexBufferInterface *vertexBuffer = staticBuffer ? staticBuffer : static_cast<VertexBufferInterface*>(mStreamingBuffer);
bool directStorage = vertexBuffer->directStoragePossible(attrib, currentValue); bool directStorage = vertexBuffer->directStoragePossible(attrib, currentValue);
......
...@@ -39,7 +39,7 @@ static void InvalidateAttachmentSwizzles(const gl::FramebufferAttachment *attach ...@@ -39,7 +39,7 @@ static void InvalidateAttachmentSwizzles(const gl::FramebufferAttachment *attach
{ {
gl::Texture *texture = attachment->getTexture(); gl::Texture *texture = attachment->getTexture();
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
TextureStorage *texStorage = textureD3D->getNativeTexture(); TextureStorage *texStorage = textureD3D->getNativeTexture();
if (texStorage) if (texStorage)
{ {
......
...@@ -94,7 +94,7 @@ void InputLayoutCache::markDirty() ...@@ -94,7 +94,7 @@ void InputLayoutCache::markDirty()
gl::Error InputLayoutCache::applyVertexBuffers(TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS], gl::Error InputLayoutCache::applyVertexBuffers(TranslatedAttribute attributes[gl::MAX_VERTEX_ATTRIBS],
gl::Program *program) gl::Program *program)
{ {
ProgramD3D *programD3D = ProgramD3D::makeProgramD3D(program->getImplementation()); ProgramD3D *programD3D = GetImplAs<ProgramD3D>(program);
int sortedSemanticIndices[gl::MAX_VERTEX_ATTRIBS]; int sortedSemanticIndices[gl::MAX_VERTEX_ATTRIBS];
programD3D->sortAttributesByLayout(attributes, sortedSemanticIndices); programD3D->sortAttributesByLayout(attributes, sortedSemanticIndices);
......
...@@ -559,7 +559,7 @@ gl::Error Renderer11::generateSwizzle(gl::Texture *texture) ...@@ -559,7 +559,7 @@ gl::Error Renderer11::generateSwizzle(gl::Texture *texture)
{ {
if (texture) if (texture)
{ {
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
ASSERT(textureD3D); ASSERT(textureD3D);
TextureStorage *texStorage = textureD3D->getNativeTexture(); TextureStorage *texStorage = textureD3D->getNativeTexture();
...@@ -583,7 +583,7 @@ gl::Error Renderer11::generateSwizzle(gl::Texture *texture) ...@@ -583,7 +583,7 @@ gl::Error Renderer11::generateSwizzle(gl::Texture *texture)
gl::Error Renderer11::setSamplerState(gl::SamplerType type, int index, gl::Texture *texture, const gl::SamplerState &samplerStateParam) gl::Error Renderer11::setSamplerState(gl::SamplerType type, int index, gl::Texture *texture, const gl::SamplerState &samplerStateParam)
{ {
// Make sure to add the level offset for our tiny compressed texture workaround // Make sure to add the level offset for our tiny compressed texture workaround
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
gl::SamplerState samplerStateInternal = samplerStateParam; gl::SamplerState samplerStateInternal = samplerStateParam;
samplerStateInternal.baseLevel += textureD3D->getNativeTexture()->getTopLevel(); samplerStateInternal.baseLevel += textureD3D->getNativeTexture()->getTopLevel();
...@@ -640,7 +640,7 @@ gl::Error Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *t ...@@ -640,7 +640,7 @@ gl::Error Renderer11::setTexture(gl::SamplerType type, int index, gl::Texture *t
if (texture) if (texture)
{ {
TextureD3D *textureImpl = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureImpl = GetImplAs<TextureD3D>(texture);
TextureStorage *texStorage = textureImpl->getNativeTexture(); TextureStorage *texStorage = textureImpl->getNativeTexture();
ASSERT(texStorage != NULL); ASSERT(texStorage != NULL);
...@@ -1257,7 +1257,7 @@ gl::Error Renderer11::drawArrays(const gl::Data &data, GLenum mode, GLsizei coun ...@@ -1257,7 +1257,7 @@ gl::Error Renderer11::drawArrays(const gl::Data &data, GLenum mode, GLsizei coun
mDeviceContext->Draw(count, 0); mDeviceContext->Draw(count, 0);
} }
ProgramD3D *programD3D = ProgramD3D::makeProgramD3D(data.state->getProgram()->getImplementation()); ProgramD3D *programD3D = GetImplAs<ProgramD3D>(data.state->getProgram());
rx::ShaderExecutableD3D *pixelExe = NULL; rx::ShaderExecutableD3D *pixelExe = NULL;
gl::Error error = programD3D->getPixelExecutableForFramebuffer(data.state->getDrawFramebuffer(), &pixelExe); gl::Error error = programD3D->getPixelExecutableForFramebuffer(data.state->getDrawFramebuffer(), &pixelExe);
...@@ -1352,7 +1352,7 @@ gl::Error Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *ind ...@@ -1352,7 +1352,7 @@ gl::Error Renderer11::drawLineLoop(GLsizei count, GLenum type, const GLvoid *ind
// Get the raw indices for an indexed draw // Get the raw indices for an indexed draw
if (type != GL_NONE && elementArrayBuffer) if (type != GL_NONE && elementArrayBuffer)
{ {
BufferD3D *storage = BufferD3D::makeFromBuffer(elementArrayBuffer); BufferD3D *storage = GetImplAs<BufferD3D>(elementArrayBuffer);
intptr_t offset = reinterpret_cast<intptr_t>(indices); intptr_t offset = reinterpret_cast<intptr_t>(indices);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
...@@ -1463,7 +1463,7 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid * ...@@ -1463,7 +1463,7 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid *
// Get the raw indices for an indexed draw // Get the raw indices for an indexed draw
if (type != GL_NONE && elementArrayBuffer) if (type != GL_NONE && elementArrayBuffer)
{ {
BufferD3D *storage = BufferD3D::makeFromBuffer(elementArrayBuffer); BufferD3D *storage = GetImplAs<BufferD3D>(elementArrayBuffer);
intptr_t offset = reinterpret_cast<intptr_t>(indices); intptr_t offset = reinterpret_cast<intptr_t>(indices);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
...@@ -1585,7 +1585,7 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid * ...@@ -1585,7 +1585,7 @@ gl::Error Renderer11::drawTriangleFan(GLsizei count, GLenum type, const GLvoid *
gl::Error Renderer11::applyShaders(gl::Program *program, const gl::VertexFormat inputLayout[], const gl::Framebuffer *framebuffer, gl::Error Renderer11::applyShaders(gl::Program *program, const gl::VertexFormat inputLayout[], const gl::Framebuffer *framebuffer,
bool rasterizerDiscard, bool transformFeedbackActive) bool rasterizerDiscard, bool transformFeedbackActive)
{ {
ProgramD3D *programD3D = ProgramD3D::makeProgramD3D(program->getImplementation()); ProgramD3D *programD3D = GetImplAs<ProgramD3D>(program);
ShaderExecutableD3D *vertexExe = NULL; ShaderExecutableD3D *vertexExe = NULL;
gl::Error error = programD3D->getVertexExecutableForInputLayout(inputLayout, &vertexExe, nullptr); gl::Error error = programD3D->getVertexExecutableForInputLayout(inputLayout, &vertexExe, nullptr);
...@@ -1678,7 +1678,7 @@ gl::Error Renderer11::applyUniforms(const ProgramImpl &program, const std::vecto ...@@ -1678,7 +1678,7 @@ gl::Error Renderer11::applyUniforms(const ProgramImpl &program, const std::vecto
} }
} }
const ProgramD3D *programD3D = ProgramD3D::makeProgramD3D(&program); const ProgramD3D *programD3D = GetAs<ProgramD3D>(&program);
const UniformStorage11 *vertexUniformStorage = UniformStorage11::makeUniformStorage11(&programD3D->getVertexUniformStorage()); const UniformStorage11 *vertexUniformStorage = UniformStorage11::makeUniformStorage11(&programD3D->getVertexUniformStorage());
const UniformStorage11 *fragmentUniformStorage = UniformStorage11::makeUniformStorage11(&programD3D->getFragmentUniformStorage()); const UniformStorage11 *fragmentUniformStorage = UniformStorage11::makeUniformStorage11(&programD3D->getFragmentUniformStorage());
ASSERT(vertexUniformStorage); ASSERT(vertexUniformStorage);
...@@ -2496,7 +2496,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G ...@@ -2496,7 +2496,7 @@ gl::Error Renderer11::createRenderTarget(int width, int height, GLenum format, G
DefaultAttachmentImpl *Renderer11::createDefaultAttachment(GLenum type, egl::Surface *surface) DefaultAttachmentImpl *Renderer11::createDefaultAttachment(GLenum type, egl::Surface *surface)
{ {
SurfaceD3D *surfaceD3D = SurfaceD3D::makeSurfaceD3D(surface); SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
SwapChain11 *swapChain = SwapChain11::makeSwapChain11(surfaceD3D->getSwapChain()); SwapChain11 *swapChain = SwapChain11::makeSwapChain11(surfaceD3D->getSwapChain());
switch (type) switch (type)
...@@ -3267,7 +3267,7 @@ void Renderer11::invalidateFBOAttachmentSwizzles(gl::FramebufferAttachment *atta ...@@ -3267,7 +3267,7 @@ void Renderer11::invalidateFBOAttachmentSwizzles(gl::FramebufferAttachment *atta
ASSERT(attachment->type() == GL_TEXTURE); ASSERT(attachment->type() == GL_TEXTURE);
gl::Texture *texture = attachment->getTexture(); gl::Texture *texture = attachment->getTexture();
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
TextureStorage *texStorage = textureD3D->getNativeTexture(); TextureStorage *texStorage = textureD3D->getNativeTexture();
if (texStorage) if (texStorage)
{ {
......
...@@ -123,7 +123,7 @@ gl::Error VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attri ...@@ -123,7 +123,7 @@ gl::Error VertexBuffer11::storeVertexAttributes(const gl::VertexAttribute &attri
{ {
if (buffer) if (buffer)
{ {
BufferD3D *storage = BufferD3D::makeFromBuffer(buffer); BufferD3D *storage = GetImplAs<BufferD3D>(buffer);
error = storage->getData(&input); error = storage->getData(&input);
if (error.isError()) if (error.isError())
{ {
......
...@@ -723,7 +723,7 @@ gl::Error Renderer9::setSamplerState(gl::SamplerType type, int index, gl::Textur ...@@ -723,7 +723,7 @@ gl::Error Renderer9::setSamplerState(gl::SamplerType type, int index, gl::Textur
int d3dSampler = index + d3dSamplerOffset; int d3dSampler = index + d3dSamplerOffset;
// Make sure to add the level offset for our tiny compressed texture workaround // Make sure to add the level offset for our tiny compressed texture workaround
TextureD3D *textureD3D = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureD3D = GetImplAs<TextureD3D>(texture);
DWORD baseLevel = samplerState.baseLevel + textureD3D->getNativeTexture()->getTopLevel(); DWORD baseLevel = samplerState.baseLevel + textureD3D->getNativeTexture()->getTopLevel();
mDevice->SetSamplerState(d3dSampler, D3DSAMP_ADDRESSU, gl_d3d9::ConvertTextureWrap(samplerState.wrapS)); mDevice->SetSamplerState(d3dSampler, D3DSAMP_ADDRESSU, gl_d3d9::ConvertTextureWrap(samplerState.wrapS));
...@@ -759,7 +759,7 @@ gl::Error Renderer9::setTexture(gl::SamplerType type, int index, gl::Texture *te ...@@ -759,7 +759,7 @@ gl::Error Renderer9::setTexture(gl::SamplerType type, int index, gl::Texture *te
if (texture) if (texture)
{ {
TextureD3D* textureImpl = TextureD3D::makeTextureD3D(texture->getImplementation()); TextureD3D *textureImpl = GetImplAs<TextureD3D>(texture);
TextureStorage *texStorage = textureImpl->getNativeTexture(); TextureStorage *texStorage = textureImpl->getNativeTexture();
if (texStorage) if (texStorage)
...@@ -1457,7 +1457,7 @@ gl::Error Renderer9::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indi ...@@ -1457,7 +1457,7 @@ gl::Error Renderer9::drawLineLoop(GLsizei count, GLenum type, const GLvoid *indi
// Get the raw indices for an indexed draw // Get the raw indices for an indexed draw
if (type != GL_NONE && elementArrayBuffer) if (type != GL_NONE && elementArrayBuffer)
{ {
BufferD3D *storage = BufferD3D::makeFromBuffer(elementArrayBuffer); BufferD3D *storage = GetImplAs<BufferD3D>(elementArrayBuffer);
intptr_t offset = reinterpret_cast<intptr_t>(indices); intptr_t offset = reinterpret_cast<intptr_t>(indices);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
gl::Error error = storage->getData(&bufferData); gl::Error error = storage->getData(&bufferData);
...@@ -1659,7 +1659,7 @@ gl::Error Renderer9::drawIndexedPoints(GLsizei count, GLenum type, const GLvoid ...@@ -1659,7 +1659,7 @@ gl::Error Renderer9::drawIndexedPoints(GLsizei count, GLenum type, const GLvoid
if (elementArrayBuffer) if (elementArrayBuffer)
{ {
BufferD3D *storage = BufferD3D::makeFromBuffer(elementArrayBuffer); BufferD3D *storage = GetImplAs<BufferD3D>(elementArrayBuffer);
intptr_t offset = reinterpret_cast<intptr_t>(indices); intptr_t offset = reinterpret_cast<intptr_t>(indices);
const uint8_t *bufferData = NULL; const uint8_t *bufferData = NULL;
...@@ -1759,7 +1759,7 @@ gl::Error Renderer9::applyShaders(gl::Program *program, const gl::VertexFormat i ...@@ -1759,7 +1759,7 @@ gl::Error Renderer9::applyShaders(gl::Program *program, const gl::VertexFormat i
ASSERT(!transformFeedbackActive); ASSERT(!transformFeedbackActive);
ASSERT(!rasterizerDiscard); ASSERT(!rasterizerDiscard);
ProgramD3D *programD3D = ProgramD3D::makeProgramD3D(program->getImplementation()); ProgramD3D *programD3D = GetImplAs<ProgramD3D>(program);
ShaderExecutableD3D *vertexExe = NULL; ShaderExecutableD3D *vertexExe = NULL;
gl::Error error = programD3D->getVertexExecutableForInputLayout(inputLayout, &vertexExe, nullptr); gl::Error error = programD3D->getVertexExecutableForInputLayout(inputLayout, &vertexExe, nullptr);
...@@ -2562,7 +2562,7 @@ gl::Error Renderer9::createRenderTarget(int width, int height, GLenum format, GL ...@@ -2562,7 +2562,7 @@ gl::Error Renderer9::createRenderTarget(int width, int height, GLenum format, GL
DefaultAttachmentImpl *Renderer9::createDefaultAttachment(GLenum type, egl::Surface *surface) DefaultAttachmentImpl *Renderer9::createDefaultAttachment(GLenum type, egl::Surface *surface)
{ {
SurfaceD3D *surfaceD3D = SurfaceD3D::makeSurfaceD3D(surface); SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
SwapChain9 *swapChain = SwapChain9::makeSwapChain9(surfaceD3D->getSwapChain()); SwapChain9 *swapChain = SwapChain9::makeSwapChain9(surfaceD3D->getSwapChain());
switch (type) switch (type)
......
...@@ -97,7 +97,7 @@ gl::Error VertexBuffer9::storeVertexAttributes(const gl::VertexAttribute &attrib ...@@ -97,7 +97,7 @@ gl::Error VertexBuffer9::storeVertexAttributes(const gl::VertexAttribute &attrib
{ {
if (buffer) if (buffer)
{ {
BufferD3D *storage = BufferD3D::makeFromBuffer(buffer); BufferD3D *storage = GetImplAs<BufferD3D>(buffer);
ASSERT(storage); ASSERT(storage);
error = storage->getData(&input); error = storage->getData(&input);
if (error.isError()) if (error.isError())
......
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