Commit 54768f09 by Nicolas Capens Committed by Nicolas Capens

Eliminate GL index and vertex data manager.

Bug 18591036 Change-Id: Ifaecb4a50072de0924b78de7da83c9c1335ed38b Reviewed-on: https://swiftshader-review.googlesource.com/1551Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent dde7f446
// SwiftShader Software Renderer
//
// Copyright(c) 2005-2013 TransGaming 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 TransGaming Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// Buffer.cpp: Implements the Buffer class, representing storage of vertex and/or
// index data. Implements GL buffer objects and related functionality.
// [OpenGL ES 2.0.24] section 2.9 page 21.
#include "Buffer.h"
#include "main.h"
#include "VertexDataManager.h"
#include "IndexDataManager.h"
namespace es2
{
}
// SwiftShader Software Renderer
//
// Copyright(c) 2005-2012 TransGaming 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 TransGaming Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// Buffer.h: Defines the Buffer class, representing storage of vertex and/or
// index data. Implements GL buffer objects and related functionality.
// [OpenGL ES 2.0.24] section 2.9 page 21.
#ifndef LIBGLESV2_BUFFER_H_
#define LIBGLESV2_BUFFER_H_
#include "RefCountObject.h"
#include "Common/Resource.hpp"
#define GL_APICALL
#include <GLES2/gl2.h>
#include <cstddef>
#include <vector>
namespace es2
{
}
#endif // LIBGLESV2_BUFFER_H_
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include "main.h" #include "main.h"
#include "mathutil.h" #include "mathutil.h"
#include "utilities.h" #include "utilities.h"
#include "Buffer.h"
#include "Fence.h" #include "Fence.h"
#include "Framebuffer.h" #include "Framebuffer.h"
#include "Program.h" #include "Program.h"
...@@ -25,8 +24,6 @@ ...@@ -25,8 +24,6 @@
#include "Renderbuffer.h" #include "Renderbuffer.h"
#include "Shader.h" #include "Shader.h"
#include "Texture.h" #include "Texture.h"
#include "VertexDataManager.h"
#include "IndexDataManager.h"
#include "libEGL/Display.h" #include "libEGL/Display.h"
#include "libEGL/Surface.h" #include "libEGL/Surface.h"
#include "Common/Half.hpp" #include "Common/Half.hpp"
...@@ -124,9 +121,6 @@ Context::Context(const egl::Config *config, const Context *shareContext) : mConf ...@@ -124,9 +121,6 @@ Context::Context(const egl::Config *config, const Context *shareContext) : mConf
mState.depthBuffer = 0; mState.depthBuffer = 0;
mState.stencilBuffer = 0; mState.stencilBuffer = 0;
mVertexDataManager = NULL;
mIndexDataManager = NULL;
mInvalidEnum = false; mInvalidEnum = false;
mInvalidValue = false; mInvalidValue = false;
mInvalidOperation = false; mInvalidOperation = false;
...@@ -140,17 +134,12 @@ Context::Context(const egl::Config *config, const Context *shareContext) : mConf ...@@ -140,17 +134,12 @@ Context::Context(const egl::Config *config, const Context *shareContext) : mConf
Context::~Context() Context::~Context()
{ {
delete mVertexDataManager;
delete mIndexDataManager;
} }
void Context::makeCurrent(egl::Surface *surface) void Context::makeCurrent(egl::Surface *surface)
{ {
if(!mHasBeenCurrent) if(!mHasBeenCurrent)
{ {
mVertexDataManager = new VertexDataManager(this);
mIndexDataManager = new IndexDataManager();
mState.viewportX = 0; mState.viewportX = 0;
mState.viewportY = 0; mState.viewportY = 0;
mState.viewportWidth = surface->getWidth(); mState.viewportWidth = surface->getWidth();
...@@ -596,11 +585,6 @@ void Context::setVertexAttribState(unsigned int attribNum, sw::Resource *buffer, ...@@ -596,11 +585,6 @@ void Context::setVertexAttribState(unsigned int attribNum, sw::Resource *buffer,
mState.vertexAttribute[attribNum].mOffset = offset; mState.vertexAttribute[attribNum].mOffset = offset;
} }
const VertexAttributeArray &Context::getVertexAttributes()
{
return mState.vertexAttribute;
}
void Context::setPackAlignment(GLint alignment) void Context::setPackAlignment(GLint alignment)
{ {
mState.packAlignment = alignment; mState.packAlignment = alignment;
...@@ -888,58 +872,65 @@ void Context::applyState(GLenum drawMode) ...@@ -888,58 +872,65 @@ void Context::applyState(GLenum drawMode)
} }
} }
GLenum Context::applyVertexBuffer(GLint base, GLint first, GLsizei count) struct TranslatedAttribute
{ {
TranslatedAttribute attributes[MAX_VERTEX_ATTRIBS]; sw::StreamType type;
int count;
bool normalized;
GLenum err = mVertexDataManager->prepareVertexData(first, count, attributes); unsigned int offset;
if(err != GL_NO_ERROR) unsigned int stride; // 0 means not to advance the read pointer at all
{
return err;
}
Program *program = mState.program; sw::Resource *vertexBuffer;
};
device->resetInputStreams(false); GLenum Context::applyVertexBuffer(GLint base, GLint first)
{
const VertexAttributeArray &attribs = mState.vertexAttribute;
Program *program = mState.program;
device->resetInputStreams(false);
for(int i = 0; i < MAX_VERTEX_ATTRIBS; i++) for(int i = 0; i < MAX_VERTEX_ATTRIBS; i++)
{ {
if(program->getAttributeStream(i) == -1) if(program->getAttributeStream(i) != -1 && attribs[i].mArrayEnabled)
{ {
continue; unsigned int offset = first * attribs[i].stride() + attribs[i].mOffset;
} unsigned int stride = attribs[i].stride();
sw::StreamType type;
sw::Resource *resource = attributes[i].vertexBuffer;
const void *buffer = (char*)resource->data() + attributes[i].offset; switch(attribs[i].mType)
{
int stride = attributes[i].stride; case GL_BYTE: type = sw::STREAMTYPE_SBYTE; break;
case GL_UNSIGNED_BYTE: type = sw::STREAMTYPE_BYTE; break;
buffer = (char*)buffer + stride * base; case GL_SHORT: type = sw::STREAMTYPE_SHORT; break;
case GL_UNSIGNED_SHORT: type = sw::STREAMTYPE_USHORT; break;
case GL_FIXED: type = sw::STREAMTYPE_FIXED; break;
case GL_FLOAT: type = sw::STREAMTYPE_FLOAT; break;
default: UNREACHABLE(); type = sw::STREAMTYPE_FLOAT; break;
}
sw::Resource *resource = attribs[i].buffer;
const void *buffer = (char*)resource->data() + offset;
buffer = (char*)buffer + stride * base;
sw::Stream attribute(resource, buffer, stride); sw::Stream attribute(resource, buffer, stride);
attribute.type = attributes[i].type; attribute.type = type;
attribute.count = attributes[i].count; attribute.count = attribs[i].mSize;
attribute.normalized = attributes[i].normalized; attribute.normalized = attribs[i].mNormalized;
int stream = program->getAttributeStream(i); int stream = program->getAttributeStream(i);
device->setInputStream(stream, attribute); device->setInputStream(stream, attribute);
} }
}
return GL_NO_ERROR; return GL_NO_ERROR;
} }
// Applies the indices and element array bindings void Context::applyIndexBuffer()
GLenum Context::applyIndexBuffer(const void *indices, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo)
{ {
GLenum err = mIndexDataManager->prepareIndexData(type, count, mState.elementArrayBuffer, indices, indexInfo); device->setIndexBuffer(mState.elementArrayBuffer);
if(err == GL_NO_ERROR)
{
device->setIndexBuffer(indexInfo->indexBuffer);
}
return err;
} }
// Applies the shaders and shader constants // Applies the shaders and shader constants
...@@ -1062,6 +1053,17 @@ void Context::applyTexture(sw::SamplerType type, int index, Texture *baseTexture ...@@ -1062,6 +1053,17 @@ void Context::applyTexture(sw::SamplerType type, int index, Texture *baseTexture
} }
} }
static std::size_t typeSize(GLenum type)
{
switch(type)
{
case GL_UNSIGNED_INT: return sizeof(GLuint);
case GL_UNSIGNED_SHORT: return sizeof(GLushort);
case GL_UNSIGNED_BYTE: return sizeof(GLubyte);
default: UNREACHABLE(); return sizeof(GLushort);
}
}
void Context::drawArrays(GLenum mode, GLint first, GLsizei count) void Context::drawArrays(GLenum mode, GLint first, GLsizei count)
{ {
if(!mState.program) if(!mState.program)
...@@ -1087,7 +1089,7 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count) ...@@ -1087,7 +1089,7 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count)
applyState(mode); applyState(mode);
GLenum err = applyVertexBuffer(0, first, count); GLenum err = applyVertexBuffer(0, first);
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
{ {
return error(err); return error(err);
...@@ -1106,14 +1108,9 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count) ...@@ -1106,14 +1108,9 @@ void Context::drawArrays(GLenum mode, GLint first, GLsizei count)
} }
} }
void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const void *indices) void Context::drawElements(GLenum mode, GLsizei count, GLenum type, intptr_t offset)
{ {
if(!mState.program) if(!mState.program || !mState.elementArrayBuffer)
{
return error(GL_INVALID_OPERATION);
}
if(!indices && !mState.elementArrayBuffer)
{ {
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
...@@ -1136,15 +1133,9 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const void * ...@@ -1136,15 +1133,9 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const void *
applyState(mode); applyState(mode);
TranslatedIndexData indexInfo; applyIndexBuffer();
GLenum err = applyIndexBuffer(indices, count, mode, type, &indexInfo);
if(err != GL_NO_ERROR) GLenum err = applyVertexBuffer(0, 0);
{
return error(err);
}
GLsizei vertexCount = indexInfo.maxIndex - indexInfo.minIndex + 1;
err = applyVertexBuffer(-(int)indexInfo.minIndex, indexInfo.minIndex, vertexCount);
if(err != GL_NO_ERROR) if(err != GL_NO_ERROR)
{ {
return error(err); return error(err);
...@@ -1160,7 +1151,7 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const void * ...@@ -1160,7 +1151,7 @@ void Context::drawElements(GLenum mode, GLsizei count, GLenum type, const void *
if(!cullSkipsDraw(mode)) if(!cullSkipsDraw(mode))
{ {
device->drawIndexedPrimitive(primitiveType, indexInfo.indexOffset, primitiveCount, IndexDataManager::typeSize(type)); device->drawIndexedPrimitive(primitiveType, offset, primitiveCount, typeSize(type));
} }
} }
......
...@@ -305,8 +305,6 @@ public: ...@@ -305,8 +305,6 @@ public:
void setVertexAttribState(unsigned int attribNum, sw::Resource *buffer, GLint size, GLenum type, void setVertexAttribState(unsigned int attribNum, sw::Resource *buffer, GLint size, GLenum type,
bool normalized, GLsizei stride, intptr_t offset); bool normalized, GLsizei stride, intptr_t offset);
const VertexAttributeArray &getVertexAttributes();
void setUnpackAlignment(GLint alignment); void setUnpackAlignment(GLint alignment);
GLint getUnpackAlignment() const; GLint getUnpackAlignment() const;
...@@ -316,7 +314,7 @@ public: ...@@ -316,7 +314,7 @@ public:
void setRenderbufferStorage(RenderbufferStorage *renderbuffer); void setRenderbufferStorage(RenderbufferStorage *renderbuffer);
void drawArrays(GLenum mode, GLint first, GLsizei count); void drawArrays(GLenum mode, GLint first, GLsizei count);
void drawElements(GLenum mode, GLsizei count, GLenum type, const void *indices); void drawElements(GLenum mode, GLsizei count, GLenum type, intptr_t offset);
void finish(); void finish();
void flush(); void flush();
...@@ -337,8 +335,8 @@ public: ...@@ -337,8 +335,8 @@ public:
bool applyRenderTarget(); bool applyRenderTarget();
void applyState(GLenum drawMode); void applyState(GLenum drawMode);
GLenum applyVertexBuffer(GLint base, GLint first, GLsizei count); GLenum applyVertexBuffer(GLint base, GLint first);
GLenum applyIndexBuffer(const void *indices, GLsizei count, GLenum mode, GLenum type, TranslatedIndexData *indexInfo); void applyIndexBuffer();
void applyShaders(); void applyShaders();
void applyTexture(sw::SamplerType type, int sampler, Texture *texture); void applyTexture(sw::SamplerType type, int sampler, Texture *texture);
...@@ -361,9 +359,6 @@ public: ...@@ -361,9 +359,6 @@ public:
QueryMap mQueryMap; QueryMap mQueryMap;
HandleAllocator mQueryHandleAllocator; HandleAllocator mQueryHandleAllocator;
VertexDataManager *mVertexDataManager;
IndexDataManager *mIndexDataManager;
// Recorded errors // Recorded errors
bool mInvalidEnum; bool mInvalidEnum;
bool mInvalidValue; bool mInvalidValue;
......
// SwiftShader Software Renderer
//
// Copyright(c) 2005-2012 TransGaming 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 TransGaming Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// IndexDataManager.cpp: Defines the IndexDataManager, a class that
// runs the Buffer translation process for index buffers.
#include "IndexDataManager.h"
#include "Buffer.h"
#include "common/debug.h"
#include <string.h>
#include <algorithm>
namespace es2
{
IndexDataManager::IndexDataManager()
{
}
IndexDataManager::~IndexDataManager()
{
}
void copyIndices(GLenum type, const void *input, GLsizei count, void *output)
{
if(type == GL_UNSIGNED_BYTE)
{
memcpy(output, input, count * sizeof(GLubyte));
}
else if(type == GL_UNSIGNED_INT)
{
memcpy(output, input, count * sizeof(GLuint));
}
else if(type == GL_UNSIGNED_SHORT)
{
memcpy(output, input, count * sizeof(GLushort));
}
else UNREACHABLE();
}
template<class IndexType>
void computeRange(const IndexType *indices, GLsizei count, GLuint *minIndex, GLuint *maxIndex)
{
*minIndex = indices[0];
*maxIndex = indices[0];
for(GLsizei i = 0; i < count; i++)
{
if(*minIndex > indices[i]) *minIndex = indices[i];
if(*maxIndex < indices[i]) *maxIndex = indices[i];
}
}
void computeRange(GLenum type, const void *indices, GLsizei count, GLuint *minIndex, GLuint *maxIndex)
{
if(type == GL_UNSIGNED_BYTE)
{
computeRange(static_cast<const GLubyte*>(indices), count, minIndex, maxIndex);
}
else if(type == GL_UNSIGNED_INT)
{
computeRange(static_cast<const GLuint*>(indices), count, minIndex, maxIndex);
}
else if(type == GL_UNSIGNED_SHORT)
{
computeRange(static_cast<const GLushort*>(indices), count, minIndex, maxIndex);
}
else UNREACHABLE();
}
GLenum IndexDataManager::prepareIndexData(GLenum type, GLsizei count, sw::Resource *buffer, const void *indices, TranslatedIndexData *translated)
{
intptr_t offset = reinterpret_cast<intptr_t>(indices);
bool alignedOffset = false;
switch(type)
{
case GL_UNSIGNED_BYTE: alignedOffset = (offset % sizeof(GLubyte) == 0); break;
case GL_UNSIGNED_SHORT: alignedOffset = (offset % sizeof(GLushort) == 0); break;
case GL_UNSIGNED_INT: alignedOffset = (offset % sizeof(GLuint) == 0); break;
default: UNREACHABLE(); alignedOffset = false;
}
if(typeSize(type) * count + offset > static_cast<std::size_t>(buffer->size))
{
return GL_INVALID_OPERATION;
}
indices = static_cast<const GLubyte*>(buffer->data()) + offset;
computeRange(type, indices, count, &translated->minIndex, &translated->maxIndex);
translated->indexBuffer = buffer;
translated->indexOffset = offset;
return GL_NO_ERROR;
}
std::size_t IndexDataManager::typeSize(GLenum type)
{
switch(type)
{
case GL_UNSIGNED_INT: return sizeof(GLuint);
case GL_UNSIGNED_SHORT: return sizeof(GLushort);
case GL_UNSIGNED_BYTE: return sizeof(GLubyte);
default: UNREACHABLE(); return sizeof(GLushort);
}
}
}
// SwiftShader Software Renderer
//
// Copyright(c) 2005-2012 TransGaming 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 TransGaming Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// IndexDataManager.h: Defines the IndexDataManager, a class that
// runs the Buffer translation process for index buffers.
#ifndef LIBGLESV2_INDEXDATAMANAGER_H_
#define LIBGLESV2_INDEXDATAMANAGER_H_
#include "Context.h"
#define GL_APICALL
#include <GLES2/gl2.h>
namespace es2
{
struct TranslatedIndexData
{
unsigned int minIndex;
unsigned int maxIndex;
unsigned int indexOffset;
sw::Resource *indexBuffer;
};
class IndexDataManager
{
public:
IndexDataManager();
virtual ~IndexDataManager();
GLenum prepareIndexData(GLenum type, GLsizei count, sw::Resource *arrayElementBuffer, const void *indices, TranslatedIndexData *translated);
static std::size_t typeSize(GLenum type);
};
}
#endif // LIBGLESV2_INDEXDATAMANAGER_H_
// SwiftShader Software Renderer
//
// Copyright(c) 2005-2012 TransGaming 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 TransGaming Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// VertexDataManager.h: Defines the VertexDataManager, a class that
// runs the Buffer translation process.
#include "VertexDataManager.h"
#include "Buffer.h"
#include "Program.h"
#include "IndexDataManager.h"
#include "common/debug.h"
namespace es2
{
VertexDataManager::VertexDataManager(Context *context) : mContext(context)
{
}
VertexDataManager::~VertexDataManager()
{
}
GLenum VertexDataManager::prepareVertexData(GLint start, GLsizei count, TranslatedAttribute *translated)
{
const VertexAttributeArray &attribs = mContext->getVertexAttributes();
Program *program = mContext->mState.program;
// Perform the vertex data translations
for(int i = 0; i < MAX_VERTEX_ATTRIBS; i++)
{
if(program->getAttributeStream(i) != -1)
{
if(attribs[i].mArrayEnabled)
{
translated[i].vertexBuffer = attribs[i].buffer;
translated[i].offset = start * attribs[i].stride() + attribs[i].mOffset;
translated[i].stride = attribs[i].stride();
switch(attribs[i].mType)
{
case GL_BYTE: translated[i].type = sw::STREAMTYPE_SBYTE; break;
case GL_UNSIGNED_BYTE: translated[i].type = sw::STREAMTYPE_BYTE; break;
case GL_SHORT: translated[i].type = sw::STREAMTYPE_SHORT; break;
case GL_UNSIGNED_SHORT: translated[i].type = sw::STREAMTYPE_USHORT; break;
case GL_FIXED: translated[i].type = sw::STREAMTYPE_FIXED; break;
case GL_FLOAT: translated[i].type = sw::STREAMTYPE_FLOAT; break;
default: UNREACHABLE(); translated[i].type = sw::STREAMTYPE_FLOAT; break;
}
translated[i].count = attribs[i].mSize;
translated[i].normalized = attribs[i].mNormalized;
}
else
{
translated[i].vertexBuffer = 0;
translated[i].type = sw::STREAMTYPE_FLOAT;
translated[i].count = 4;
translated[i].stride = 0;
translated[i].offset = 0;
}
}
}
return GL_NO_ERROR;
}
}
// SwiftShader Software Renderer
//
// Copyright(c) 2005-2012 TransGaming 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 TransGaming Inc. Without such an agreement, no rights or licenses, express
// or implied, including but not limited to any patent rights, are granted to you.
//
// VertexDataManager.h: Defines the VertexDataManager, a class that
// runs the Buffer translation process.
#ifndef LIBGLESV2_VERTEXDATAMANAGER_H_
#define LIBGLESV2_VERTEXDATAMANAGER_H_
#include "Context.h"
#include "Device.hpp"
#define GL_APICALL
#include <GLES2/gl2.h>
namespace es2
{
struct TranslatedAttribute
{
sw::StreamType type;
int count;
bool normalized;
unsigned int offset;
unsigned int stride; // 0 means not to advance the read pointer at all
sw::Resource *vertexBuffer;
};
class VertexDataManager
{
public:
VertexDataManager(Context *context);
virtual ~VertexDataManager();
GLenum prepareVertexData(GLint start, GLsizei count, TranslatedAttribute *outAttribs);
private:
Context *const mContext;
};
}
#endif // LIBGLESV2_VERTEXDATAMANAGER_H_
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
// libRAD.cpp: Implements the exported Radiance functions. // libRAD.cpp: Implements the exported Radiance functions.
#include "main.h" #include "main.h"
#include "Buffer.h"
#include "Context.h" #include "Context.h"
#include "Program.h" #include "Program.h"
#include "Shader.h" #include "Shader.h"
......
...@@ -160,7 +160,6 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman ...@@ -160,7 +160,6 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Buffer.cpp" />
<ClCompile Include="Context.cpp" /> <ClCompile Include="Context.cpp" />
<ClCompile Include="..\common\debug.cpp" /> <ClCompile Include="..\common\debug.cpp" />
<ClCompile Include="Device.cpp" /> <ClCompile Include="Device.cpp" />
...@@ -168,7 +167,6 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman ...@@ -168,7 +167,6 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman
<ClCompile Include="Framebuffer.cpp" /> <ClCompile Include="Framebuffer.cpp" />
<ClCompile Include="HandleAllocator.cpp" /> <ClCompile Include="HandleAllocator.cpp" />
<ClCompile Include="Image.cpp" /> <ClCompile Include="Image.cpp" />
<ClCompile Include="IndexDataManager.cpp" />
<ClCompile Include="libRAD.cpp" /> <ClCompile Include="libRAD.cpp" />
<ClCompile Include="main.cpp" /> <ClCompile Include="main.cpp" />
<ClCompile Include="Program.cpp" /> <ClCompile Include="Program.cpp" />
...@@ -178,21 +176,18 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman ...@@ -178,21 +176,18 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman
<ClCompile Include="Shader.cpp" /> <ClCompile Include="Shader.cpp" />
<ClCompile Include="Texture.cpp" /> <ClCompile Include="Texture.cpp" />
<ClCompile Include="utilities.cpp" /> <ClCompile Include="utilities.cpp" />
<ClCompile Include="VertexDataManager.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\common\debug.h" /> <ClInclude Include="..\common\debug.h" />
<ClInclude Include="..\include\GLES2\gl2.h" /> <ClInclude Include="..\include\GLES2\gl2.h" />
<ClInclude Include="..\include\GLES2\gl2ext.h" /> <ClInclude Include="..\include\GLES2\gl2ext.h" />
<ClInclude Include="..\include\GLES2\gl2platform.h" /> <ClInclude Include="..\include\GLES2\gl2platform.h" />
<ClInclude Include="Buffer.h" />
<ClInclude Include="Context.h" /> <ClInclude Include="Context.h" />
<ClInclude Include="Device.hpp" /> <ClInclude Include="Device.hpp" />
<ClInclude Include="Fence.h" /> <ClInclude Include="Fence.h" />
<ClInclude Include="Framebuffer.h" /> <ClInclude Include="Framebuffer.h" />
<ClInclude Include="HandleAllocator.h" /> <ClInclude Include="HandleAllocator.h" />
<ClInclude Include="Image.hpp" /> <ClInclude Include="Image.hpp" />
<ClInclude Include="IndexDataManager.h" />
<ClInclude Include="main.h" /> <ClInclude Include="main.h" />
<ClInclude Include="mathutil.h" /> <ClInclude Include="mathutil.h" />
<ClInclude Include="Program.h" /> <ClInclude Include="Program.h" />
...@@ -203,7 +198,6 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman ...@@ -203,7 +198,6 @@ copy "$(OutDir)libRAD.dll" "$(ProjectDir)..\..\..\lib\$(Configuration)\"</Comman
<ClInclude Include="Shader.h" /> <ClInclude Include="Shader.h" />
<ClInclude Include="Texture.h" /> <ClInclude Include="Texture.h" />
<ClInclude Include="utilities.h" /> <ClInclude Include="utilities.h" />
<ClInclude Include="VertexDataManager.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="libRAD.def" /> <None Include="libRAD.def" />
......
...@@ -11,9 +11,6 @@ ...@@ -11,9 +11,6 @@
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="Buffer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Context.cpp"> <ClCompile Include="Context.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
...@@ -29,9 +26,6 @@ ...@@ -29,9 +26,6 @@
<ClCompile Include="HandleAllocator.cpp"> <ClCompile Include="HandleAllocator.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="IndexDataManager.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="libRAD.cpp"> <ClCompile Include="libRAD.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
...@@ -56,9 +50,6 @@ ...@@ -56,9 +50,6 @@
<ClCompile Include="utilities.cpp"> <ClCompile Include="utilities.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="VertexDataManager.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Device.cpp"> <ClCompile Include="Device.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
...@@ -70,9 +61,6 @@ ...@@ -70,9 +61,6 @@
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Buffer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Context.h"> <ClInclude Include="Context.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
...@@ -85,9 +73,6 @@ ...@@ -85,9 +73,6 @@
<ClInclude Include="HandleAllocator.h"> <ClInclude Include="HandleAllocator.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="IndexDataManager.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="main.h"> <ClInclude Include="main.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
...@@ -115,9 +100,6 @@ ...@@ -115,9 +100,6 @@
<ClInclude Include="utilities.h"> <ClInclude Include="utilities.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="VertexDataManager.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Device.hpp"> <ClInclude Include="Device.hpp">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
......
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