Commit 2d234afa by Alexis Hetu Committed by Alexis Hétu

Adding new object types for OpenGL ES 3.0

New objects: - Sampler - Transform feedback - Vertex Array Change-Id: I701ea5fea75b81196290c3bdb3230cd471cc537b Reviewed-on: https://swiftshader-review.googlesource.com/2796Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent ed30618f
...@@ -76,6 +76,7 @@ enum ...@@ -76,6 +76,7 @@ enum
MAX_UNIFORM_BLOCKS_COMPONENTS = 49152, MAX_UNIFORM_BLOCKS_COMPONENTS = 49152,
MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * FRAGMENT_UNIFORM_VECTORS, MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * FRAGMENT_UNIFORM_VECTORS,
MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * VERTEX_UNIFORM_VECTORS, MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = MAX_UNIFORM_BLOCKS_COMPONENTS + 4 * VERTEX_UNIFORM_VECTORS,
MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4,
}; };
#endif // sw_Config_hpp #endif // sw_Config_hpp
...@@ -121,6 +121,7 @@ LOCAL_SRC_FILES += \ ...@@ -121,6 +121,7 @@ LOCAL_SRC_FILES += \
ResourceManager.cpp \ ResourceManager.cpp \
Shader.cpp \ Shader.cpp \
Texture.cpp \ Texture.cpp \
TransformFeedback.cpp \
utilities.cpp \ utilities.cpp \
VertexDataManager.cpp \ VertexDataManager.cpp \
......
...@@ -24,8 +24,11 @@ ...@@ -24,8 +24,11 @@
#include "Program.h" #include "Program.h"
#include "Query.h" #include "Query.h"
#include "Renderbuffer.h" #include "Renderbuffer.h"
#include "Sampler.h"
#include "Shader.h" #include "Shader.h"
#include "Texture.h" #include "Texture.h"
#include "TransformFeedback.h"
#include "VertexArray.h"
#include "VertexDataManager.h" #include "VertexDataManager.h"
#include "IndexDataManager.h" #include "IndexDataManager.h"
#include "libEGL/Display.h" #include "libEGL/Display.h"
...@@ -138,6 +141,9 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint ...@@ -138,6 +141,9 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint
mTextureCubeMapZero = new TextureCubeMap(0); mTextureCubeMapZero = new TextureCubeMap(0);
mTextureExternalZero = new TextureExternal(0); mTextureExternalZero = new TextureExternal(0);
mState.transformFeedback = new TransformFeedback(0);
mTransformFeedbackMap[0] = mState.transformFeedback;
mState.activeSampler = 0; mState.activeSampler = 0;
bindArrayBuffer(0); bindArrayBuffer(0);
bindElementArrayBuffer(0); bindElementArrayBuffer(0);
...@@ -826,6 +832,36 @@ GLuint Context::createQuery() ...@@ -826,6 +832,36 @@ GLuint Context::createQuery()
return handle; return handle;
} }
// Returns an unused vertex array name
GLuint Context::createVertexArray()
{
GLuint handle = mVertexArrayNameSpace.allocate();
mVertexArrayMap[handle] = NULL;
return handle;
}
// Returns an unused transform feedback name
GLuint Context::createTransformFeedback()
{
GLuint handle = mTransformFeedbackNameSpace.allocate();
mTransformFeedbackMap[handle] = NULL;
return handle;
}
// Returns an unused sampler name
GLuint Context::createSampler()
{
GLuint handle = mSamplerNameSpace.allocate();
mSamplerMap[handle] = NULL;
return handle;
}
void Context::deleteBuffer(GLuint buffer) void Context::deleteBuffer(GLuint buffer)
{ {
if(mResourceManager->getBuffer(buffer)) if(mResourceManager->getBuffer(buffer))
...@@ -909,6 +945,57 @@ void Context::deleteQuery(GLuint query) ...@@ -909,6 +945,57 @@ void Context::deleteQuery(GLuint query)
} }
} }
void Context::deleteVertexArray(GLuint vertexArray)
{
VertexArrayMap::iterator vertexArrayObject = mVertexArrayMap.find(vertexArray);
if(vertexArrayObject != mVertexArrayMap.end())
{
mVertexArrayNameSpace.release(vertexArrayObject->first);
if(vertexArrayObject->second)
{
vertexArrayObject->second->release();
}
mVertexArrayMap.erase(vertexArrayObject);
}
}
void Context::deleteTransformFeedback(GLuint transformFeedback)
{
TransformFeedbackMap::iterator transformFeedbackObject = mTransformFeedbackMap.find(transformFeedback);
if(transformFeedbackObject != mTransformFeedbackMap.end())
{
mTransformFeedbackNameSpace.release(transformFeedbackObject->first);
if(transformFeedbackObject->second)
{
transformFeedbackObject->second->release();
}
mTransformFeedbackMap.erase(transformFeedbackObject);
}
}
void Context::deleteSampler(GLuint sampler)
{
SamplerMap::iterator samplerObject = mSamplerMap.find(sampler);
if(samplerObject != mSamplerMap.end())
{
mSamplerNameSpace.release(samplerObject->first);
if(samplerObject->second)
{
samplerObject->second->release();
}
mSamplerMap.erase(samplerObject);
}
}
Buffer *Context::getBuffer(GLuint handle) Buffer *Context::getBuffer(GLuint handle)
{ {
return mResourceManager->getBuffer(handle); return mResourceManager->getBuffer(handle);
...@@ -1011,6 +1098,43 @@ void Context::bindRenderbuffer(GLuint renderbuffer) ...@@ -1011,6 +1098,43 @@ void Context::bindRenderbuffer(GLuint renderbuffer)
mState.renderbuffer = getRenderbuffer(renderbuffer); mState.renderbuffer = getRenderbuffer(renderbuffer);
} }
bool Context::bindVertexArray(GLuint array)
{
VertexArray* vertexArray = getVertexArray(array);
if(vertexArray)
{
mState.vertexArray = vertexArray;
}
return !!vertexArray;
}
bool Context::bindTransformFeedback(GLuint id)
{
TransformFeedback* transformFeedback = getTransformFeedback(id);
if(transformFeedback)
{
mState.transformFeedback = transformFeedback;
return true;
}
return false;
}
bool Context::bindSampler(GLuint unit, GLuint sampler)
{
Sampler* samplerObject = getSampler(sampler);
if(sampler)
{
mState.sampler[unit] = samplerObject;
}
return !!samplerObject;
}
void Context::useProgram(GLuint program) void Context::useProgram(GLuint program)
{ {
GLuint priorProgram = mState.currentProgram; GLuint priorProgram = mState.currentProgram;
...@@ -1180,6 +1304,27 @@ Query *Context::getQuery(unsigned int handle, bool create, GLenum type) ...@@ -1180,6 +1304,27 @@ Query *Context::getQuery(unsigned int handle, bool create, GLenum type)
} }
} }
VertexArray *Context::getVertexArray(GLuint array)
{
VertexArrayMap::iterator vertexArray = mVertexArrayMap.find(array);
return (vertexArray == mVertexArrayMap.end()) ? NULL : vertexArray->second;
}
TransformFeedback *Context::getTransformFeedback(GLuint transformFeedback)
{
TransformFeedbackMap::iterator transformFeedbackObject = mTransformFeedbackMap.find(transformFeedback);
return (transformFeedbackObject == mTransformFeedbackMap.end()) ? NULL : transformFeedbackObject->second;
}
Sampler *Context::getSampler(GLuint sampler)
{
SamplerMap::iterator samplerObject = mSamplerMap.find(sampler);
return (samplerObject == mSamplerMap.end()) ? NULL : samplerObject->second;
}
Buffer *Context::getArrayBuffer() Buffer *Context::getArrayBuffer()
{ {
return mState.arrayBuffer; return mState.arrayBuffer;
...@@ -1258,6 +1403,20 @@ bool Context::getBooleanv(GLenum pname, GLboolean *params) ...@@ -1258,6 +1403,20 @@ bool Context::getBooleanv(GLenum pname, GLboolean *params)
case GL_DITHER: *params = mState.dither; break; case GL_DITHER: *params = mState.dither; break;
case GL_PRIMITIVE_RESTART_FIXED_INDEX: *params = mState.primitiveRestartFixedIndex; break; case GL_PRIMITIVE_RESTART_FIXED_INDEX: *params = mState.primitiveRestartFixedIndex; break;
case GL_RASTERIZER_DISCARD: *params = mState.rasterizerDiscard; break; case GL_RASTERIZER_DISCARD: *params = mState.rasterizerDiscard; break;
case GL_TRANSFORM_FEEDBACK_ACTIVE:
if(mState.transformFeedback)
{
*params = mState.transformFeedback->isActive();
break;
}
else return false;
case GL_TRANSFORM_FEEDBACK_PAUSED:
if(mState.transformFeedback)
{
*params = mState.transformFeedback->isPaused();
break;
}
else return false;
default: default:
return false; return false;
} }
...@@ -1780,17 +1939,33 @@ bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) ...@@ -1780,17 +1939,33 @@ bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param)
*param = 0; *param = 0;
break; break;
case GL_TRANSFORM_FEEDBACK_ACTIVE: // boolean, initially GL_FALSE case GL_TRANSFORM_FEEDBACK_ACTIVE: // boolean, initially GL_FALSE
*param = GL_FALSE; if(mState.transformFeedback)
break; {
*param = mState.transformFeedback->isActive();
break;
}
else return false;
case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: // name, initially 0 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: // name, initially 0
*param = 0; if(mState.transformFeedback && mState.transformFeedback->getGenericBuffer())
break; {
*param = mState.transformFeedback->getGenericBuffer()->name;
break;
}
else return false;
case GL_TRANSFORM_FEEDBACK_PAUSED: // boolean, initially GL_FALSE case GL_TRANSFORM_FEEDBACK_PAUSED: // boolean, initially GL_FALSE
*param = GL_FALSE; if(mState.transformFeedback)
break; {
*param = mState.transformFeedback->isPaused();
break;
}
else return false;
case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: // indexed[n] 64-bit integer, initially 0
*param = 0; if(mState.transformFeedback && mState.transformFeedback->getGenericBuffer())
break; {
*param = mState.transformFeedback->getGenericBuffer()->size();
break;
}
else return false;
case GL_TRANSFORM_FEEDBACK_BUFFER_START: // indexed[n] 64-bit integer, initially 0 case GL_TRANSFORM_FEEDBACK_BUFFER_START: // indexed[n] 64-bit integer, initially 0
*param = 0; *param = 0;
break; break;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "common/Object.hpp" #include "common/Object.hpp"
#include "Image.hpp" #include "Image.hpp"
#include "Renderer/Sampler.hpp" #include "Renderer/Sampler.hpp"
#include "TransformFeedback.h"
#define GL_APICALL #define GL_APICALL
#include <GLES2/gl2.h> #include <GLES2/gl2.h>
...@@ -65,6 +66,8 @@ class VertexDataManager; ...@@ -65,6 +66,8 @@ class VertexDataManager;
class IndexDataManager; class IndexDataManager;
class Fence; class Fence;
class Query; class Query;
class Sampler;
class VertexArray;
enum enum
{ {
...@@ -254,6 +257,9 @@ struct State ...@@ -254,6 +257,9 @@ struct State
GLuint drawFramebuffer; GLuint drawFramebuffer;
gl::BindingPointer<Renderbuffer> renderbuffer; gl::BindingPointer<Renderbuffer> renderbuffer;
GLuint currentProgram; GLuint currentProgram;
gl::BindingPointer<VertexArray> vertexArray;
gl::BindingPointer<TransformFeedback> transformFeedback;
gl::BindingPointer<Sampler> sampler[MAX_COMBINED_TEXTURE_IMAGE_UNITS];
VertexAttribute vertexAttribute[MAX_VERTEX_ATTRIBS]; VertexAttribute vertexAttribute[MAX_VERTEX_ATTRIBS];
gl::BindingPointer<Texture> samplerTexture[TEXTURE_TYPE_COUNT][MAX_COMBINED_TEXTURE_IMAGE_UNITS]; gl::BindingPointer<Texture> samplerTexture[TEXTURE_TYPE_COUNT][MAX_COMBINED_TEXTURE_IMAGE_UNITS];
...@@ -387,6 +393,18 @@ public: ...@@ -387,6 +393,18 @@ public:
GLuint createQuery(); GLuint createQuery();
void deleteQuery(GLuint query); void deleteQuery(GLuint query);
// Vertex arrays are owned by the Context
GLuint createVertexArray();
void deleteVertexArray(GLuint array);
// Transform feedbacks are owned by the Context
GLuint createTransformFeedback();
void deleteTransformFeedback(GLuint transformFeedback);
// Samplers are owned by the Context
GLuint createSampler();
void deleteSampler(GLuint sampler);
void bindArrayBuffer(GLuint buffer); void bindArrayBuffer(GLuint buffer);
void bindElementArrayBuffer(GLuint buffer); void bindElementArrayBuffer(GLuint buffer);
void bindTexture2D(GLuint texture); void bindTexture2D(GLuint texture);
...@@ -396,6 +414,9 @@ public: ...@@ -396,6 +414,9 @@ public:
void bindReadFramebuffer(GLuint framebuffer); void bindReadFramebuffer(GLuint framebuffer);
void bindDrawFramebuffer(GLuint framebuffer); void bindDrawFramebuffer(GLuint framebuffer);
void bindRenderbuffer(GLuint renderbuffer); void bindRenderbuffer(GLuint renderbuffer);
bool bindVertexArray(GLuint array);
bool bindTransformFeedback(GLuint transformFeedback);
bool bindSampler(GLuint unit, GLuint sampler);
void useProgram(GLuint program); void useProgram(GLuint program);
void beginQuery(GLenum target, GLuint query); void beginQuery(GLenum target, GLuint query);
...@@ -415,6 +436,10 @@ public: ...@@ -415,6 +436,10 @@ public:
Framebuffer *getFramebuffer(GLuint handle); Framebuffer *getFramebuffer(GLuint handle);
virtual Renderbuffer *getRenderbuffer(GLuint handle); virtual Renderbuffer *getRenderbuffer(GLuint handle);
Query *getQuery(GLuint handle, bool create, GLenum type); Query *getQuery(GLuint handle, bool create, GLenum type);
VertexArray *getVertexArray(GLuint array);
TransformFeedback *getTransformFeedback(GLuint transformFeedback);
TransformFeedback *getTransformFeedback();
Sampler *getSampler(GLuint sampler);
Buffer *getArrayBuffer(); Buffer *getArrayBuffer();
Buffer *getElementArrayBuffer(); Buffer *getElementArrayBuffer();
...@@ -503,6 +528,18 @@ private: ...@@ -503,6 +528,18 @@ private:
QueryMap mQueryMap; QueryMap mQueryMap;
gl::NameSpace mQueryNameSpace; gl::NameSpace mQueryNameSpace;
typedef std::map<GLint, VertexArray*> VertexArrayMap;
VertexArrayMap mVertexArrayMap;
gl::NameSpace mVertexArrayNameSpace;
typedef std::map<GLint, TransformFeedback*> TransformFeedbackMap;
TransformFeedbackMap mTransformFeedbackMap;
gl::NameSpace mTransformFeedbackNameSpace;
typedef std::map<GLint, Sampler*> SamplerMap;
SamplerMap mSamplerMap;
gl::NameSpace mSamplerNameSpace;
VertexDataManager *mVertexDataManager; VertexDataManager *mVertexDataManager;
IndexDataManager *mIndexDataManager; IndexDataManager *mIndexDataManager;
......
// SwiftShader Software Renderer
//
// Copyright(c) 2015 Google Inc.
//
// All rights reserved. No part of this software may be copied, distributed, transmitted,
// transcribed, stored in a retrieval system, translated into any human or computer
// language by any means, or disclosed to third parties without the explicit written
// agreement of Google Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// Sampler.h: Defines the es2::Sampler class
#ifndef LIBGLESV2_SAMPLER_H_
#define LIBGLESV2_SAMPLER_H_
#include "common/Object.hpp"
#include "Renderer/Renderer.hpp"
#define GL_APICALL
#include <GLES2/gl2.h>
namespace es2
{
class Sampler : public gl::Object
{
public:
Sampler(GLuint name) : Object(name)
{
mMinFilter = GL_NEAREST_MIPMAP_LINEAR;
mMagFilter = GL_LINEAR;
mWrapModeS = GL_REPEAT;
mWrapModeT = GL_REPEAT;
mWrapModeR = GL_REPEAT;
mMinLod = -1000.0f;
mMaxLod = 1000.0f;
mCompareMode = GL_NONE;
mCompareFunc = GL_LEQUAL;
}
GLenum mMinFilter;
GLenum mMagFilter;
GLenum mWrapModeS;
GLenum mWrapModeT;
GLenum mWrapModeR;
GLfloat mMinLod;
GLfloat mMaxLod;
GLenum mCompareMode;
GLenum mCompareFunc;
};
}
#endif // LIBGLESV2_SAMPLER_H_
...@@ -46,7 +46,7 @@ enum ...@@ -46,7 +46,7 @@ enum
IMPLEMENTATION_MAX_SAMPLES = 4, IMPLEMENTATION_MAX_SAMPLES = 4,
IMPLEMENTATION_MAX_COLOR_ATTACHMENTS = 8, IMPLEMENTATION_MAX_COLOR_ATTACHMENTS = 8,
IMPLEMENTATION_MAX_DRAW_BUFFERS = 8, IMPLEMENTATION_MAX_DRAW_BUFFERS = 8,
IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 4, IMPLEMENTATION_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 36, IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 36,
IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 1, IMPLEMENTATION_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 1,
}; };
......
// SwiftShader Software Renderer
//
// Copyright(c) 2015 Google Inc.
//
// All rights reserved. No part of this software may be copied, distributed, transmitted,
// transcribed, stored in a retrieval system, translated into any human or computer
// language by any means, or disclosed to third parties without the explicit written
// agreement of Google Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// TransformFeedback.cpp: Implements the es2::TransformFeedback class
#include "TransformFeedback.h"
#include "Buffer.h"
namespace es2
{
TransformFeedback::TransformFeedback(GLuint name) : Object(name), mActive(false), mPaused(false)
{
mGenericBuffer = NULL;
}
Buffer* TransformFeedback::getGenericBuffer() const
{
return mGenericBuffer;
}
Buffer* TransformFeedback::getBuffer(GLuint index) const
{
return mBuffer[index];
}
bool TransformFeedback::isActive() const
{
return mActive;
}
bool TransformFeedback::isPaused() const
{
return mPaused;
}
GLenum TransformFeedback::primitiveMode() const
{
return mPrimitiveMode;
}
void TransformFeedback::begin(GLenum primitiveMode)
{
mActive = true; mPrimitiveMode = primitiveMode;
}
void TransformFeedback::end()
{
mActive = false;
}
void TransformFeedback::setPaused(bool paused)
{
mPaused = paused;
}
void TransformFeedback::setGenericBuffer(Buffer* buffer)
{
mGenericBuffer = buffer;
}
void TransformFeedback::setBuffer(GLuint index, Buffer* buffer)
{
mBuffer[index] = buffer;
}
void TransformFeedback::setBuffer(GLuint index, Buffer* buffer, GLintptr offset, GLsizeiptr size)
{
mBuffer[index] = buffer;
if(buffer)
{
buffer->mapRange(offset, size, buffer->access());
}
}
}
// SwiftShader Software Renderer
//
// Copyright(c) 2015 Google Inc.
//
// All rights reserved. No part of this software may be copied, distributed, transmitted,
// transcribed, stored in a retrieval system, translated into any human or computer
// language by any means, or disclosed to third parties without the explicit written
// agreement of Google Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// TransformFeedback.h: Defines the es2::TransformFeedback class
#ifndef LIBGLESV2_TRANSFORM_FEEDBACK_H_
#define LIBGLESV2_TRANSFORM_FEEDBACK_H_
#include "common/Object.hpp"
#include "Renderer/Renderer.hpp"
#define GL_APICALL
#include <GLES2/gl2.h>
namespace es2
{
class Buffer;
class TransformFeedback : public gl::Object
{
public:
// FIXME: Change this when implementing transform feedback
TransformFeedback(GLuint name);
Buffer* getGenericBuffer() const;
Buffer* getBuffer(GLuint index) const;
bool isActive() const;
bool isPaused() const;
GLenum primitiveMode() const;
void setGenericBuffer(Buffer* buffer);
void setBuffer(GLuint index, Buffer* buffer);
void setBuffer(GLuint index, Buffer* buffer, GLintptr offset, GLsizeiptr size);
void begin(GLenum primitiveMode);
void end();
void setPaused(bool paused);
private:
gl::BindingPointer<Buffer> mGenericBuffer;
gl::BindingPointer<Buffer> mBuffer[MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS];
bool mActive;
bool mPaused;
GLenum mPrimitiveMode;
};
}
#endif // LIBGLESV2_TRANSFORM_FEEDBACK_H_
// SwiftShader Software Renderer
//
// Copyright(c) 2015 Google Inc.
//
// All rights reserved. No part of this software may be copied, distributed, transmitted,
// transcribed, stored in a retrieval system, translated into any human or computer
// language by any means, or disclosed to third parties without the explicit written
// agreement of Google Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// VertexArray.h: Defines the es2::VertexArray class
#ifndef LIBGLESV2_VERTEX_ARRAY_H_
#define LIBGLESV2_VERTEX_ARRAY_H_
#include "common/Object.hpp"
#include "Renderer/Renderer.hpp"
#define GL_APICALL
#include <GLES2/gl2.h>
namespace es2
{
class VertexArray : public gl::Object
{
};
}
#endif // LIBGLESV2_VERTEX_ARRAY_H_
...@@ -358,10 +358,14 @@ ...@@ -358,10 +358,14 @@
<Unit filename="Renderbuffer.h" /> <Unit filename="Renderbuffer.h" />
<Unit filename="ResourceManager.cpp" /> <Unit filename="ResourceManager.cpp" />
<Unit filename="ResourceManager.h" /> <Unit filename="ResourceManager.h" />
<Unit filename="Sampler.h" />
<Unit filename="Shader.cpp" /> <Unit filename="Shader.cpp" />
<Unit filename="Shader.h" /> <Unit filename="Shader.h" />
<Unit filename="Texture.cpp" /> <Unit filename="Texture.cpp" />
<Unit filename="Texture.h" /> <Unit filename="Texture.h" />
<Unit filename="TransformFeedback.cpp" />
<Unit filename="TransformFeedback.h" />
<Unit filename="VertexArray.h" />
<Unit filename="VertexDataManager.cpp" /> <Unit filename="VertexDataManager.cpp" />
<Unit filename="VertexDataManager.h" /> <Unit filename="VertexDataManager.h" />
<Unit filename="exports.map" /> <Unit filename="exports.map" />
......
...@@ -337,6 +337,7 @@ copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)_$(Plat ...@@ -337,6 +337,7 @@ copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)_$(Plat
<ClCompile Include="ResourceManager.cpp" /> <ClCompile Include="ResourceManager.cpp" />
<ClCompile Include="Shader.cpp" /> <ClCompile Include="Shader.cpp" />
<ClCompile Include="Texture.cpp" /> <ClCompile Include="Texture.cpp" />
<ClCompile Include="TransformFeedback.cpp" />
<ClCompile Include="utilities.cpp" /> <ClCompile Include="utilities.cpp" />
<ClCompile Include="VertexDataManager.cpp" /> <ClCompile Include="VertexDataManager.cpp" />
</ItemGroup> </ItemGroup>
...@@ -361,9 +362,12 @@ copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)_$(Plat ...@@ -361,9 +362,12 @@ copy "$(OutDir)libGLESv2.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)_$(Plat
<ClInclude Include="Renderbuffer.h" /> <ClInclude Include="Renderbuffer.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="ResourceManager.h" /> <ClInclude Include="ResourceManager.h" />
<ClInclude Include="Sampler.h" />
<ClInclude Include="Shader.h" /> <ClInclude Include="Shader.h" />
<ClInclude Include="Texture.h" /> <ClInclude Include="Texture.h" />
<ClInclude Include="TransformFeedback.h" />
<ClInclude Include="utilities.h" /> <ClInclude Include="utilities.h" />
<ClInclude Include="VertexArray.h" />
<ClInclude Include="VertexDataManager.h" /> <ClInclude Include="VertexDataManager.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
...@@ -74,6 +74,9 @@ ...@@ -74,6 +74,9 @@
<ClCompile Include="libGLESv3.cpp"> <ClCompile Include="libGLESv3.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="TransformFeedback.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Buffer.h"> <ClInclude Include="Buffer.h">
...@@ -148,6 +151,15 @@ ...@@ -148,6 +151,15 @@
<ClInclude Include="..\common\NameSpace.hpp"> <ClInclude Include="..\common\NameSpace.hpp">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Sampler.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="TransformFeedback.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="VertexArray.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="libGLESv2.rc" /> <ResourceCompile Include="libGLESv2.rc" />
......
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