111c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com//
211c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
311c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be
411c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com// found in the LICENSE file.
511c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com//
611c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
711c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com// IndexBuffer11.h: Defines the D3D11 IndexBuffer implementation.
811c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
911c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com#ifndef LIBGLESV2_RENDERER_INDEXBUFFER11_H_
1011c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com#define LIBGLESV2_RENDERER_INDEXBUFFER11_H_
1111c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
1211c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com#include "libGLESv2/renderer/IndexBuffer.h"
1311c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
1411c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.comnamespace rx
1511c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com{
16486d9e9b6b4ed31f66d2624b8e822020fe40a1f7shannon.woods@transgaming.comclass Renderer11;
1711c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
1811c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.comclass IndexBuffer11 : public IndexBuffer
1911c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com{
2011c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com  public:
2111c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    explicit IndexBuffer11(Renderer11 *const renderer);
2211c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual ~IndexBuffer11();
2311c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
2411c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual bool initialize(unsigned int bufferSize, GLenum indexType, bool dynamic);
2511c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
2611c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    static IndexBuffer11 *makeIndexBuffer11(IndexBuffer *indexBuffer);
2711c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
2811c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual bool mapBuffer(unsigned int offset, unsigned int size, void** outMappedMemory);
2911c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual bool unmapBuffer();
3011c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
3111c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual GLenum getIndexType() const;
3211c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual unsigned int getBufferSize() const;
3311c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual bool setSize(unsigned int bufferSize, GLenum indexType);
3411c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
3511c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    virtual bool discard();
3611c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
3711c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    DXGI_FORMAT getIndexFormat() const;
3811c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    ID3D11Buffer *getBuffer() const;
3911c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
4011c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com  private:
4111c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    DISALLOW_COPY_AND_ASSIGN(IndexBuffer11);
4211c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
4311c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    rx::Renderer11 *const mRenderer;
4411c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
4511c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    ID3D11Buffer *mBuffer;
4611c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    unsigned int mBufferSize;
4711c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    GLenum mIndexType;
4811c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com    bool mDynamicUsage;
4911c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com};
5011c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
5111c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com}
5211c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com
5311c2af555ad90d9079b2a55398253f165616712cdaniel@transgaming.com#endif // LIBGLESV2_RENDERER_INDEXBUFFER11_H_