11d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com// 2a390e1eeeb5e990c9709ef5a4e80cd73f53f77c5daniel@transgaming.com// Copyright (c) 2012-2013 The ANGLE Project Authors. All rights reserved. 31d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be 41d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com// found in the LICENSE file. 51d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com// 61d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 71d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com// Renderer11.h: Defines a back-end specific class for the D3D11 renderer. 81d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 91d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com#ifndef LIBGLESV2_RENDERER_RENDERER11_H_ 101d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com#define LIBGLESV2_RENDERER_RENDERER11_H_ 111d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 121d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com#include "common/angleutils.h" 136c87217467896d150743db19e2ed664ceec56785daniel@transgaming.com#include "libGLESv2/angletypes.h" 148ce2f8f8e9597c045e6cf0c150c9302e7f3466b6shannon.woods@transgaming.com#include "libGLESv2/mathutil.h" 151d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 161d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com#include "libGLESv2/renderer/Renderer.h" 17f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com#include "libGLESv2/renderer/RenderStateCache.h" 18c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com#include "libGLESv2/renderer/InputLayoutCache.h" 19d2811d688721a729f514bd78f7fd12a43beeb0a6shannon.woods@transgaming.com#include "libGLESv2/renderer/RenderTarget.h" 201d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 21d9071b19428bd58297f7dabb4c5ed4b9689dca0dshannon.woods%transgaming.com@gtempaccount.comnamespace gl 22d9071b19428bd58297f7dabb4c5ed4b9689dca0dshannon.woods%transgaming.com@gtempaccount.com{ 23d9071b19428bd58297f7dabb4c5ed4b9689dca0dshannon.woods%transgaming.com@gtempaccount.comclass Renderbuffer; 24d9071b19428bd58297f7dabb4c5ed4b9689dca0dshannon.woods%transgaming.com@gtempaccount.com} 25d9071b19428bd58297f7dabb4c5ed4b9689dca0dshannon.woods%transgaming.com@gtempaccount.com 261d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.comnamespace rx 271d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com{ 281d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 29c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.comclass VertexDataManager; 30c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.comclass IndexDataManager; 31c51143010f903323679266df2aa47a233c964f12daniel@transgaming.comclass StreamingIndexBufferInterface; 32c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com 334e48204afe732c1ad739b73867500d11552b6e4fshannon.woods@transgaming.comenum 344e48204afe732c1ad739b73867500d11552b6e4fshannon.woods@transgaming.com{ 354e48204afe732c1ad739b73867500d11552b6e4fshannon.woods@transgaming.com MAX_VERTEX_UNIFORM_VECTORS_D3D11 = 1024, 364e48204afe732c1ad739b73867500d11552b6e4fshannon.woods@transgaming.com MAX_FRAGMENT_UNIFORM_VECTORS_D3D11 = 1024 374e48204afe732c1ad739b73867500d11552b6e4fshannon.woods@transgaming.com}; 384e48204afe732c1ad739b73867500d11552b6e4fshannon.woods@transgaming.com 391d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.comclass Renderer11 : public Renderer 401d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com{ 411d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com public: 421d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com Renderer11(egl::Display *display, HDC hDc); 431d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual ~Renderer11(); 441d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 45b64ed2824bfd5d67acb415300427edc40ae79253daniel@transgaming.com static Renderer11 *makeRenderer11(Renderer *renderer); 46b64ed2824bfd5d67acb415300427edc40ae79253daniel@transgaming.com 471d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual EGLint initialize(); 481d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool resetDevice(); 491d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 501d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual int generateConfigs(ConfigDesc **configDescList); 511d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual void deleteConfigs(ConfigDesc *configDescList); 521d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 531d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual void sync(bool block); 541d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 55b9bb27938fae86822453d7cba1bba6c704000a8adaniel@transgaming.com virtual SwapChain *createSwapChain(HWND window, HANDLE shareHandle, GLenum backBufferFormat, GLenum depthBufferFormat); 56b9bb27938fae86822453d7cba1bba6c704000a8adaniel@transgaming.com 571d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual void setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &sampler); 581d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual void setTexture(gl::SamplerType type, int index, gl::Texture *texture); 591d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 60237bc7e55bb631ebd1f5e7981b30b8a2eafbb606daniel@transgaming.com virtual void setRasterizerState(const gl::RasterizerState &rasterState); 61493d4f872b528410dee998b38c89a31492a23895daniel@transgaming.com virtual void setBlendState(const gl::BlendState &blendState, const gl::Color &blendColor, 62493d4f872b528410dee998b38c89a31492a23895daniel@transgaming.com unsigned int sampleMask); 6308c331d42f31f8291238695d86db53d760e0b330daniel@transgaming.com virtual void setDepthStencilState(const gl::DepthStencilState &depthStencilState, int stencilRef, 643a0ef48010e6a3e95c9d72f982ab6d3d4cad0c6fdaniel@transgaming.com int stencilBackRef, bool frontFaceCCW); 65493d4f872b528410dee998b38c89a31492a23895daniel@transgaming.com 66d55e8c1b48f16f93cb89798fc3640047eb74d3fddaniel@transgaming.com virtual void setScissorRectangle(const gl::Rectangle &scissor, bool enabled); 671298518804934fac7f8ecd37ad58a5ac100cff36daniel@transgaming.com virtual bool setViewport(const gl::Rectangle &viewport, float zNear, float zFar, GLenum drawMode, GLenum frontFace, 680b236e2ec3c32b79d1abca881a32cbf53027e3d3shannon.woods@transgaming.com bool ignoreViewport); 69493d4f872b528410dee998b38c89a31492a23895daniel@transgaming.com 7091207b79c85830aff4420dea395fb12ff20c3f4edaniel@transgaming.com virtual bool applyPrimitiveType(GLenum mode, GLsizei count); 71ae39ee280d5e15b8064402b75e8daecbe4146b98daniel@transgaming.com virtual bool applyRenderTarget(gl::Framebuffer *frameBuffer); 725fbf177ce23fc52625e1d7a6914fd7a9ce12c311daniel@transgaming.com virtual void applyShaders(gl::ProgramBinary *programBinary); 7321ba6478bb28924a634074f53d02c7b20f6dc1d5shannon.woods@transgaming.com virtual void applyUniforms(gl::ProgramBinary *programBinary, gl::UniformArray *uniformArray); 7491207b79c85830aff4420dea395fb12ff20c3f4edaniel@transgaming.com virtual GLenum applyVertexBuffer(gl::ProgramBinary *programBinary, gl::VertexAttribute vertexAttributes[], GLint first, GLsizei count, GLsizei instances); 75312404870905e1eff46e21632c1c2f2143af4694daniel@transgaming.com virtual GLenum applyIndexBuffer(const GLvoid *indices, gl::Buffer *elementArrayBuffer, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo); 76493d4f872b528410dee998b38c89a31492a23895daniel@transgaming.com 7791207b79c85830aff4420dea395fb12ff20c3f4edaniel@transgaming.com virtual void drawArrays(GLenum mode, GLsizei count, GLsizei instances); 7800032cb2c77dfe812dda092ecfd938e66dce7f3cshannon.woods@transgaming.com virtual void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, gl::Buffer *elementArrayBuffer, const TranslatedIndexData &indexInfo, GLsizei instances); 79def9f0f35beb8606b73bab418c69f1047252e50edaniel@transgaming.com 80084a257ef7455c230fef3b3bc0cdeced4cabb1acdaniel@transgaming.com virtual void clear(const gl::ClearParameters &clearParams, gl::Framebuffer *frameBuffer); 81d084c620c0d275be03b10e1f802582dd278ff6fedaniel@transgaming.com 82c43a60557d5e25cfb80cb0cd3c2a01920251745fdaniel@transgaming.com virtual void markAllStateDirty(); 83c43a60557d5e25cfb80cb0cd3c2a01920251745fdaniel@transgaming.com 841d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com // lost device 85eb049e2c2de52176f2a755460d421889fda9ed19shannon.woods@transgaming.com void notifyDeviceLost(); 861d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool isDeviceLost(); 871d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool testDeviceLost(bool notify); 881d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool testDeviceResettable(); 891d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 901d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com // Renderer capabilities 911d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual DWORD getAdapterVendor() const; 92ca1ac1f113e18815bab14a3465039bd57b41c10ddaniel@transgaming.com virtual std::string getRendererDescription() const; 931d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual GUID getAdapterIdentifier() const; 941d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 95bec04bf43b2603f33a84c6eb6b6fa4b13ad10161shannon.woods@transgaming.com virtual bool getBGRATextureSupport() const; 961d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getDXT1TextureSupport(); 971d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getDXT3TextureSupport(); 981d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getDXT5TextureSupport(); 991d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getEventQuerySupport(); 1001d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getFloat32TextureSupport(bool *filtering, bool *renderable); 1011d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getFloat16TextureSupport(bool *filtering, bool *renderable); 1021d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getLuminanceTextureSupport(); 1031d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getLuminanceAlphaTextureSupport(); 104233fe9548a2b166d3ccb09a4a7af273fab6dbf2cshannon.woods@transgaming.com virtual unsigned int getMaxVertexTextureImageUnits() const; 10576cd88c5a67c14da7f4e0a7a6491297e3fb49bcbshannon.woods@transgaming.com virtual unsigned int getMaxCombinedTextureImageUnits() const; 106d8136cbbc2a2d9249ef1acad54fb875fe521eee5shannon.woods@transgaming.com virtual unsigned int getReservedVertexUniformVectors() const; 107d8136cbbc2a2d9249ef1acad54fb875fe521eee5shannon.woods@transgaming.com virtual unsigned int getReservedFragmentUniformVectors() const; 108d8136cbbc2a2d9249ef1acad54fb875fe521eee5shannon.woods@transgaming.com virtual unsigned int getMaxVertexUniformVectors() const; 109d8136cbbc2a2d9249ef1acad54fb875fe521eee5shannon.woods@transgaming.com virtual unsigned int getMaxFragmentUniformVectors() const; 110d8136cbbc2a2d9249ef1acad54fb875fe521eee5shannon.woods@transgaming.com virtual unsigned int getMaxVaryingVectors() const; 1111d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getNonPower2TextureSupport() const; 1121d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getDepthTextureSupport() const; 1131d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getOcclusionQuerySupport() const; 1141d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getInstancingSupport() const; 1151d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getTextureFilterAnisotropySupport() const; 1161d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual float getTextureMaxAnisotropy() const; 1171d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool getShareHandleSupport() const; 1187629bb6c10907e6aae1710eafd15306d43c1840edaniel@transgaming.com virtual bool getDerivativeInstructionSupport() const; 1198d2f086ad33f82aa1a01fe86a1bbfa6eba47e224shannon.woods@transgaming.com virtual bool getPostSubBufferSupport() const; 1201d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 1219549bead5dc8bb07a21296ea8bea97939285c699daniel@transgaming.com virtual int getMajorShaderModel() const; 1221d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual float getMaxPointSize() const; 1238ce2f8f8e9597c045e6cf0c150c9302e7f3466b6shannon.woods@transgaming.com virtual int getMaxViewportDimension() const; 1241d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual int getMaxTextureWidth() const; 1251d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual int getMaxTextureHeight() const; 1261d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual bool get32BitIndexSupport() const; 1271d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual int getMinSwapInterval() const; 1281d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual int getMaxSwapInterval() const; 1291d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 1301d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com virtual GLsizei getMaxSupportedSamples() const; 13188fbd0feec1c8617a216386d6d20bbe8e68dcee7shannon.woods@transgaming.com int getNearestSupportedSamples(DXGI_FORMAT format, unsigned int requested) const; 1321d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 133a4e7017d2e7d9fff04c1ab259b0636885a23b7b2shannon.woods%transgaming.com@gtempaccount.com virtual unsigned int getMaxRenderTargets() const; 134a4e7017d2e7d9fff04c1ab259b0636885a23b7b2shannon.woods%transgaming.com@gtempaccount.com 135a9c7142435f100d43684a0efe8894cbe42ee8fccdaniel@transgaming.com // Pixel operations 13687705f8292857d1446f0967c43b7fac66a70d9c2daniel@transgaming.com virtual bool copyToRenderTarget(TextureStorageInterface2D *dest, TextureStorageInterface2D *source); 13787705f8292857d1446f0967c43b7fac66a70d9c2daniel@transgaming.com virtual bool copyToRenderTarget(TextureStorageInterfaceCube *dest, TextureStorageInterfaceCube *source); 138ad6aee7de9ffae3fa885f5b487a12eea1ae0bac2daniel@transgaming.com 139664916b706c6adc2c09a003f08dc68d487dec147shannon.woods@transgaming.com virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, 14087705f8292857d1446f0967c43b7fac66a70d9c2daniel@transgaming.com GLint xoffset, GLint yoffset, TextureStorageInterface2D *storage, GLint level); 141664916b706c6adc2c09a003f08dc68d487dec147shannon.woods@transgaming.com virtual bool copyImage(gl::Framebuffer *framebuffer, const gl::Rectangle &sourceRect, GLenum destFormat, 14287705f8292857d1446f0967c43b7fac66a70d9c2daniel@transgaming.com GLint xoffset, GLint yoffset, TextureStorageInterfaceCube *storage, GLenum target, GLint level); 143383808834b498363a9c427c85ed635c6476382f0daniel@transgaming.com 1449d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com bool copyTexture(ID3D11ShaderResourceView *source, const gl::Rectangle &sourceArea, unsigned int sourceWidth, unsigned int sourceHeight, 1459d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11RenderTargetView *dest, const gl::Rectangle &destArea, unsigned int destWidth, unsigned int destHeight, GLenum destFormat); 1469d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com 147ea4a0c6671ab0b079ed5e0313699742d1c6a9bd1shannon.woods@transgaming.com virtual bool blitRect(gl::Framebuffer *readTarget, const gl::Rectangle &readRect, gl::Framebuffer *drawTarget, const gl::Rectangle &drawRect, 1486c87217467896d150743db19e2ed664ceec56785daniel@transgaming.com bool blitRenderTarget, bool blitDepthStencil); 1496c87217467896d150743db19e2ed664ceec56785daniel@transgaming.com virtual void readPixels(gl::Framebuffer *framebuffer, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, 1506c87217467896d150743db19e2ed664ceec56785daniel@transgaming.com GLsizei outputPitch, bool packReverseRowOrder, GLint packAlignment, void* pixels); 1516c87217467896d150743db19e2ed664ceec56785daniel@transgaming.com 152a9c7142435f100d43684a0efe8894cbe42ee8fccdaniel@transgaming.com // RenderTarget creation 153f2423659230818b46346496f5212fc3d1f0b537fdaniel@transgaming.com virtual RenderTarget *createRenderTarget(SwapChain *swapChain, bool depth); 154f2423659230818b46346496f5212fc3d1f0b537fdaniel@transgaming.com virtual RenderTarget *createRenderTarget(int width, int height, GLenum format, GLsizei samples, bool depth); 155f2423659230818b46346496f5212fc3d1f0b537fdaniel@transgaming.com 156a9c7142435f100d43684a0efe8894cbe42ee8fccdaniel@transgaming.com // Shader operations 15769ff7766ef5fb53d02dc1ff37066bead3a570abdshannon.woods@transgaming.com virtual ShaderExecutable *loadExecutable(const void *function, size_t length, rx::ShaderType type); 15869ff7766ef5fb53d02dc1ff37066bead3a570abdshannon.woods@transgaming.com virtual ShaderExecutable *compileToExecutable(gl::InfoLog &infoLog, const char *shaderHLSL, rx::ShaderType type); 159a9c7142435f100d43684a0efe8894cbe42ee8fccdaniel@transgaming.com 160244e1838a3d475c26e6bc1830aab5e87f8bf8c48daniel@transgaming.com // Image operations 161244e1838a3d475c26e6bc1830aab5e87f8bf8c48daniel@transgaming.com virtual Image *createImage(); 162f721fdbdaa5c675e60115e8f0203956f848c1fc1daniel@transgaming.com virtual void generateMipmap(Image *dest, Image *source); 163413d27110d15e3f218ab8b1db01d08cdc036edb6daniel@transgaming.com virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain); 164413d27110d15e3f218ab8b1db01d08cdc036edb6daniel@transgaming.com virtual TextureStorage *createTextureStorage2D(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, GLsizei width, GLsizei height); 165413d27110d15e3f218ab8b1db01d08cdc036edb6daniel@transgaming.com virtual TextureStorage *createTextureStorageCube(int levels, GLenum internalformat, GLenum usage, bool forceRenderable, int size); 166244e1838a3d475c26e6bc1830aab5e87f8bf8c48daniel@transgaming.com 1673f255b48a70b8f720d5da7cf2046eb81ba6606c2daniel@transgaming.com // Buffer creation 1683f255b48a70b8f720d5da7cf2046eb81ba6606c2daniel@transgaming.com virtual VertexBuffer *createVertexBuffer(); 1690b6d7741f627082bc197034e43da47e975909238daniel@transgaming.com virtual IndexBuffer *createIndexBuffer(); 1704e52b6356288e7d6aa46ae77e4b2ada8aee4e3c3shannon.woods@transgaming.com virtual BufferStorage *createBufferStorage(); 1713f255b48a70b8f720d5da7cf2046eb81ba6606c2daniel@transgaming.com 172cfe787e70c714a2163e67985de34d219aea7f2a7shannon.woods@transgaming.com // Query and Fence creation 17350df6c5f8a63c7fba902e4888cf9d63830f96f1eshannon.woods@transgaming.com virtual QueryImpl *createQuery(GLenum type); 174cfe787e70c714a2163e67985de34d219aea7f2a7shannon.woods@transgaming.com virtual FenceImpl *createFence(); 17550df6c5f8a63c7fba902e4888cf9d63830f96f1eshannon.woods@transgaming.com 1761d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com // D3D11-renderer specific methods 17725072f677ccc840ecd35b873fd59046e2e6878fcdaniel@transgaming.com ID3D11Device *getDevice() { return mDevice; } 1781d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com ID3D11DeviceContext *getDeviceContext() { return mDeviceContext; }; 179a60160b0c85ea5030edea66590e1475bed8c9a7cdaniel@transgaming.com IDXGIFactory *getDxgiFactory() { return mDxgiFactory; }; 1801d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 181d9071b19428bd58297f7dabb4c5ed4b9689dca0dshannon.woods%transgaming.com@gtempaccount.com bool getRenderTargetResource(gl::Renderbuffer *colorbuffer, unsigned int *subresourceIndex, ID3D11Texture2D **resource); 18252edb4a46c5303a84788d9fe25a36fef70d684e8shannon.woods%transgaming.com@gtempaccount.com void unapplyRenderTargets(); 18352edb4a46c5303a84788d9fe25a36fef70d684e8shannon.woods%transgaming.com@gtempaccount.com void setOneTimeRenderTarget(ID3D11RenderTargetView *renderTargetView); 184fdeacb8176e34112da113b3bb7e97692fb557419shannon.woods@transgaming.com 185b0f1b486b2320657f6783dd1442c9cef5f601e4bshannonwoods@chromium.org virtual bool getLUID(LUID *adapterLuid) const; 186b0f1b486b2320657f6783dd1442c9cef5f601e4bshannonwoods@chromium.org 1871d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com private: 1881d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com DISALLOW_COPY_AND_ASSIGN(Renderer11); 1891d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 190c51143010f903323679266df2aa47a233c964f12daniel@transgaming.com void drawLineLoop(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer); 19100032cb2c77dfe812dda092ecfd938e66dce7f3cshannon.woods@transgaming.com void drawTriangleFan(GLsizei count, GLenum type, const GLvoid *indices, int minIndex, gl::Buffer *elementArrayBuffer, int instances); 192c51143010f903323679266df2aa47a233c964f12daniel@transgaming.com 193ee42a0a066e2e1b2feb220e9f250b680b3536c40daniel@transgaming.com void readTextureData(ID3D11Texture2D *texture, unsigned int subResource, const gl::Rectangle &area, 194ee42a0a066e2e1b2feb220e9f250b680b3536c40daniel@transgaming.com GLenum format, GLenum type, GLsizei outputPitch, bool packReverseRowOrder, 195ee42a0a066e2e1b2feb220e9f250b680b3536c40daniel@transgaming.com GLint packAlignment, void *pixels); 196ee42a0a066e2e1b2feb220e9f250b680b3536c40daniel@transgaming.com 197132862fa39d82da9d18120e028dae33d925a1962shannonwoods@chromium.org void maskedClear(const gl::ClearParameters &clearParams, bool usingExtendedDrawBuffers); 1988ce2f8f8e9597c045e6cf0c150c9302e7f3466b6shannon.woods@transgaming.com rx::Range getViewportBounds() const; 19934f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com 2000f05d80fe75dbd13728356437965aa95bf96e27cshannon.woods%transgaming.com@gtempaccount.com bool blitRenderbufferRect(const gl::Rectangle &readRect, const gl::Rectangle &drawRect, RenderTarget *readRenderTarget, 2010f05d80fe75dbd13728356437965aa95bf96e27cshannon.woods%transgaming.com@gtempaccount.com RenderTarget *drawRenderTarget, bool wholeBufferCopy); 202d67f9ce00a1ff8289f330bb8ca9233fe38a48be2shannon.woods@transgaming.com ID3D11Texture2D *resolveMultisampledTexture(ID3D11Texture2D *source, unsigned int subresource); 203d67f9ce00a1ff8289f330bb8ca9233fe38a48be2shannon.woods@transgaming.com 2041d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com HMODULE mD3d11Module; 2051d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com HMODULE mDxgiModule; 2061d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com HDC mDc; 2071d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 2081d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com bool mDeviceLost; 2091d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 2101d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com void initializeDevice(); 2111d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com void releaseDeviceResources(); 212ca1ac1f113e18815bab14a3465039bd57b41c10ddaniel@transgaming.com int getMinorShaderModel() const; 213ddd6c80eaf97858d74d2e2effca558051fac5481shannon.woods@transgaming.com void release(); 2141d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 215f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com RenderStateCache mStateCache; 216f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com 2179cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com // Support flags 2189cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com bool mFloat16TextureSupport; 2199cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com bool mFloat16FilterSupport; 2209cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com bool mFloat16RenderSupport; 2219cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com 2229cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com bool mFloat32TextureSupport; 2239cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com bool mFloat32FilterSupport; 2249cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com bool mFloat32RenderSupport; 2259cdced65768f4f4ee407768433e824aa385a2b18shannon.woods@transgaming.com 22609f326b0e79447d84e791c6611858e0ba67c41a5shannon.woods@transgaming.com bool mDXT1TextureSupport; 22709f326b0e79447d84e791c6611858e0ba67c41a5shannon.woods@transgaming.com bool mDXT3TextureSupport; 22809f326b0e79447d84e791c6611858e0ba67c41a5shannon.woods@transgaming.com bool mDXT5TextureSupport; 22909f326b0e79447d84e791c6611858e0ba67c41a5shannon.woods@transgaming.com 230cf103f361c2ae24183f0bfd323303a97196a34d5shannon.woods@transgaming.com bool mDepthTextureSupport; 231cf103f361c2ae24183f0bfd323303a97196a34d5shannon.woods@transgaming.com 232df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com // Multisample format support 233df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com struct MultisampleSupportInfo 234df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com { 235df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com unsigned int qualityLevels[D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT]; 236df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com }; 237df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com 238df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com typedef std::unordered_map<DXGI_FORMAT, MultisampleSupportInfo> MultisampleSupportMap; 239df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com MultisampleSupportMap mMultisampleSupportMap; 240df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com 241df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com unsigned int mMaxSupportedSamples; 242df2fd572d419751477490fef10db8608e5d73545shannon.woods@transgaming.com 2437b6b83ea29cdea7c48f1bc3810bf66e60d9d2137daniel@transgaming.com // current render target states 244d6df671cdce86159d02b8d31485d7c6d5c4e1255shannon.woods%transgaming.com@gtempaccount.com unsigned int mAppliedRenderTargetSerials[gl::IMPLEMENTATION_MAX_DRAW_BUFFERS]; 24580fc3326493eee780094e1f28e60d6e8c27fbdfddaniel@transgaming.com unsigned int mAppliedDepthbufferSerial; 24680fc3326493eee780094e1f28e60d6e8c27fbdfddaniel@transgaming.com unsigned int mAppliedStencilbufferSerial; 2477b6b83ea29cdea7c48f1bc3810bf66e60d9d2137daniel@transgaming.com bool mDepthStencilInitialized; 2487b6b83ea29cdea7c48f1bc3810bf66e60d9d2137daniel@transgaming.com bool mRenderTargetDescInitialized; 2497b6b83ea29cdea7c48f1bc3810bf66e60d9d2137daniel@transgaming.com rx::RenderTarget::Desc mRenderTargetDesc; 2507b6b83ea29cdea7c48f1bc3810bf66e60d9d2137daniel@transgaming.com unsigned int mCurDepthSize; 25180fc3326493eee780094e1f28e60d6e8c27fbdfddaniel@transgaming.com unsigned int mCurStencilSize; 2527b6b83ea29cdea7c48f1bc3810bf66e60d9d2137daniel@transgaming.com 25354de24f9b9d5752e5385d119c2a401b89800952ddaniel@transgaming.com // Currently applied sampler states 254233fe9548a2b166d3ccb09a4a7af273fab6dbf2cshannon.woods@transgaming.com bool mForceSetVertexSamplerStates[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; 255233fe9548a2b166d3ccb09a4a7af273fab6dbf2cshannon.woods@transgaming.com gl::SamplerState mCurVertexSamplerStates[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; 25654de24f9b9d5752e5385d119c2a401b89800952ddaniel@transgaming.com 25754de24f9b9d5752e5385d119c2a401b89800952ddaniel@transgaming.com bool mForceSetPixelSamplerStates[gl::MAX_TEXTURE_IMAGE_UNITS]; 25854de24f9b9d5752e5385d119c2a401b89800952ddaniel@transgaming.com gl::SamplerState mCurPixelSamplerStates[gl::MAX_TEXTURE_IMAGE_UNITS]; 25954de24f9b9d5752e5385d119c2a401b89800952ddaniel@transgaming.com 260e33c8bfa0799f8dcd74a0ac88aacd4247f302386daniel@transgaming.com // Currently applied textures 261233fe9548a2b166d3ccb09a4a7af273fab6dbf2cshannon.woods@transgaming.com unsigned int mCurVertexTextureSerials[gl::IMPLEMENTATION_MAX_VERTEX_TEXTURE_IMAGE_UNITS]; 262e33c8bfa0799f8dcd74a0ac88aacd4247f302386daniel@transgaming.com unsigned int mCurPixelTextureSerials[gl::MAX_TEXTURE_IMAGE_UNITS]; 263e33c8bfa0799f8dcd74a0ac88aacd4247f302386daniel@transgaming.com 264f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com // Currently applied blend state 265f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com bool mForceSetBlendState; 266f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com gl::BlendState mCurBlendState; 267f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com gl::Color mCurBlendColor; 268f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com unsigned int mCurSampleMask; 269f8ba1091ee5c252c430d56256d3fd081ae98689bdaniel@transgaming.com 270dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com // Currently applied rasterizer state 271dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com bool mForceSetRasterState; 272dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com gl::RasterizerState mCurRasterState; 273dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com 2745503fd031e3e5491d998a643218b1aa6a8c022c9daniel@transgaming.com // Currently applied depth stencil state 2755503fd031e3e5491d998a643218b1aa6a8c022c9daniel@transgaming.com bool mForceSetDepthStencilState; 2765503fd031e3e5491d998a643218b1aa6a8c022c9daniel@transgaming.com gl::DepthStencilState mCurDepthStencilState; 2775503fd031e3e5491d998a643218b1aa6a8c022c9daniel@transgaming.com int mCurStencilRef; 2785503fd031e3e5491d998a643218b1aa6a8c022c9daniel@transgaming.com int mCurStencilBackRef; 2795503fd031e3e5491d998a643218b1aa6a8c022c9daniel@transgaming.com 280dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com // Currently applied scissor rectangle 281dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com bool mForceSetScissor; 282d55e8c1b48f16f93cb89798fc3640047eb74d3fddaniel@transgaming.com bool mScissorEnabled; 283dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com gl::Rectangle mCurScissor; 284dcf1e676adecaa793953f46739f24e7ef4efba8bdaniel@transgaming.com 2855367004c2b297b872d37e64bc83c178c6d188d83daniel@transgaming.com // Currently applied viewport 2865367004c2b297b872d37e64bc83c178c6d188d83daniel@transgaming.com bool mForceSetViewport; 2875367004c2b297b872d37e64bc83c178c6d188d83daniel@transgaming.com gl::Rectangle mCurViewport; 2885367004c2b297b872d37e64bc83c178c6d188d83daniel@transgaming.com float mCurNear; 2895367004c2b297b872d37e64bc83c178c6d188d83daniel@transgaming.com float mCurFar; 2905367004c2b297b872d37e64bc83c178c6d188d83daniel@transgaming.com 29193a5ce96058074d20a7bd94185a16bde2a8aad02Geoff Lang // Currently applied primitive topology 29293a5ce96058074d20a7bd94185a16bde2a8aad02Geoff Lang D3D11_PRIMITIVE_TOPOLOGY mCurrentPrimitiveTopology; 29393a5ce96058074d20a7bd94185a16bde2a8aad02Geoff Lang 294c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com unsigned int mAppliedIBSerial; 295a1229a3a67bcbe9be1381b787be3669c07548c3fshannon.woods@transgaming.com unsigned int mAppliedStorageIBSerial; 2967fbf486e4bf16530f84a88fa139641d82b334254daniel@transgaming.com unsigned int mAppliedIBOffset; 2977fbf486e4bf16530f84a88fa139641d82b334254daniel@transgaming.com 298e499141632259ca0189c07c5eb947b728ff4ebbedaniel@transgaming.com unsigned int mAppliedProgramBinarySerial; 299dd2524c46ed4689c27adf3f9959435fd2906b621shannon.woods@transgaming.com bool mIsGeometryShaderActive; 300e499141632259ca0189c07c5eb947b728ff4ebbedaniel@transgaming.com 3015fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com dx_VertexConstants mVertexConstants; 3025fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com dx_VertexConstants mAppliedVertexConstants; 3035fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com ID3D11Buffer *mDriverConstantBufferVS; 304a6abd8914f2d684023b0ec434ba8c6087905aba8Geoff Lang ID3D11Buffer *mCurrentVertexConstantBuffer; 3055fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com 3065fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com dx_PixelConstants mPixelConstants; 3075fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com dx_PixelConstants mAppliedPixelConstants; 3085fb979d55dfac1f6509ac6d10bc8fa22719bcc29shannon.woods@transgaming.com ID3D11Buffer *mDriverConstantBufferPS; 309a6abd8914f2d684023b0ec434ba8c6087905aba8Geoff Lang ID3D11Buffer *mCurrentPixelConstantBuffer; 310a6abd8914f2d684023b0ec434ba8c6087905aba8Geoff Lang 311a6abd8914f2d684023b0ec434ba8c6087905aba8Geoff Lang ID3D11Buffer *mCurrentGeometryConstantBuffer; 312ed36abd83e40bb1c0f4af9ea7314906b86ea3cdddaniel@transgaming.com 313c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com // Vertex, index and input layouts 314c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com VertexDataManager *mVertexDataManager; 315c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com IndexDataManager *mIndexDataManager; 316c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com InputLayoutCache mInputLayoutCache; 317c5431eb29f8ffa0088b750139802fceb31e1cc33daniel@transgaming.com 318c51143010f903323679266df2aa47a233c964f12daniel@transgaming.com StreamingIndexBufferInterface *mLineLoopIB; 3194fd1f989feaadab717e505c54dee64eff756c5abdaniel@transgaming.com StreamingIndexBufferInterface *mTriangleFanIB; 320c51143010f903323679266df2aa47a233c964f12daniel@transgaming.com 3219d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com // Texture copy resources 3229d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com bool mCopyResourcesInitialized; 3239d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11Buffer *mCopyVB; 3249d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11SamplerState *mCopySampler; 3259d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11InputLayout *mCopyIL; 3269d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11VertexShader *mCopyVS; 3279d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11PixelShader *mCopyRGBAPS; 3289d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11PixelShader *mCopyRGBPS; 3299d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11PixelShader *mCopyLumPS; 3309d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com ID3D11PixelShader *mCopyLumAlphaPS; 3319d971ffdc1f6a082980e4a6ec4cd9c6e695460e8shannon.woods@transgaming.com 33234f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com // Masked clear resources 33334f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com bool mClearResourcesInitialized; 33434f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com ID3D11Buffer *mClearVB; 33534f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com ID3D11InputLayout *mClearIL; 33634f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com ID3D11VertexShader *mClearVS; 337132862fa39d82da9d18120e028dae33d925a1962shannonwoods@chromium.org ID3D11PixelShader *mClearSinglePS; 338132862fa39d82da9d18120e028dae33d925a1962shannonwoods@chromium.org ID3D11PixelShader *mClearMultiplePS; 33934f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com ID3D11RasterizerState *mClearScissorRS; 34034f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com ID3D11RasterizerState *mClearNoScissorRS; 34134f507ce49938eb1f3cd9e2780ea53a72795a20ashannon.woods@transgaming.com 342bdf787fcd74c684f3374bbb4dc7c3e18e38996cadaniel@transgaming.com // Sync query 343bdf787fcd74c684f3374bbb4dc7c3e18e38996cadaniel@transgaming.com ID3D11Query *mSyncQuery; 344bdf787fcd74c684f3374bbb4dc7c3e18e38996cadaniel@transgaming.com 34525072f677ccc840ecd35b873fd59046e2e6878fcdaniel@transgaming.com ID3D11Device *mDevice; 34625072f677ccc840ecd35b873fd59046e2e6878fcdaniel@transgaming.com D3D_FEATURE_LEVEL mFeatureLevel; 3471d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com ID3D11DeviceContext *mDeviceContext; 34865e653778bb96bcb8843fc86df0b9981450a9afddaniel@transgaming.com IDXGIAdapter *mDxgiAdapter; 3491f811f55df504216a4d6c5e0921110639f138ac9daniel@transgaming.com DXGI_ADAPTER_DESC mAdapterDescription; 3501f811f55df504216a4d6c5e0921110639f138ac9daniel@transgaming.com char mDescription[128]; 351a60160b0c85ea5030edea66590e1475bed8c9a7cdaniel@transgaming.com IDXGIFactory *mDxgiFactory; 352bec04bf43b2603f33a84c6eb6b6fa4b13ad10161shannon.woods@transgaming.com 353bec04bf43b2603f33a84c6eb6b6fa4b13ad10161shannon.woods@transgaming.com // Cached device caps 354bec04bf43b2603f33a84c6eb6b6fa4b13ad10161shannon.woods@transgaming.com bool mBGRATextureSupport; 3551d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com}; 3561d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com 3571d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com} 3581d6aff2bc3bdd2c58e051f61cbeb491c30ec852fdaniel@transgaming.com#endif // LIBGLESV2_RENDERER_RENDERER11_H_ 359