Added a fence creation method to Renderer.

TRAC #22418

Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
Author: Geoff Lang

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1844 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/renderer/Renderer.h b/src/libGLESv2/renderer/Renderer.h
index eb8c814..85e8bc0 100644
--- a/src/libGLESv2/renderer/Renderer.h
+++ b/src/libGLESv2/renderer/Renderer.h
@@ -57,6 +57,7 @@
 class VertexBuffer;
 class IndexBuffer;
 class QueryImpl;
+class FenceImpl;
 class Blit;
 struct TranslatedIndexData;
 
@@ -209,8 +210,9 @@
     virtual VertexBuffer *createVertexBuffer() = 0;
     virtual IndexBuffer *createIndexBuffer() = 0;
 
-    // Query creation
+    // Query and Fence creation
     virtual QueryImpl *createQuery(GLenum type) = 0;
+    virtual FenceImpl *createFence() = 0;
 
   protected:
     bool initializeCompiler();
diff --git a/src/libGLESv2/renderer/Renderer11.cpp b/src/libGLESv2/renderer/Renderer11.cpp
index 6a75579..13ae00c 100644
--- a/src/libGLESv2/renderer/Renderer11.cpp
+++ b/src/libGLESv2/renderer/Renderer11.cpp
@@ -2547,13 +2547,20 @@
 IndexBuffer *Renderer11::createIndexBuffer()
 {
     return new IndexBuffer11(this);
-}

-

-QueryImpl *Renderer11::createQuery(GLenum type)

-{

-    // TODO

-    UNIMPLEMENTED();

-    return NULL;

+}
+
+QueryImpl *Renderer11::createQuery(GLenum type)
+{
+    // TODO
+    UNIMPLEMENTED();
+    return NULL;
+}
+
+FenceImpl *Renderer11::createFence()
+{
+    // TODO
+    UNIMPLEMENTED();
+    return NULL;
 }
 
 bool Renderer11::getRenderTargetResource(gl::Framebuffer *framebuffer, unsigned int *subresourceIndex, ID3D11Texture2D **resource)
diff --git a/src/libGLESv2/renderer/Renderer11.h b/src/libGLESv2/renderer/Renderer11.h
index ea8103c..6a50bbd 100644
--- a/src/libGLESv2/renderer/Renderer11.h
+++ b/src/libGLESv2/renderer/Renderer11.h
@@ -164,8 +164,9 @@
     virtual VertexBuffer *createVertexBuffer();
     virtual IndexBuffer *createIndexBuffer();
 
-    // Query creation
+    // Query and Fence creation
     virtual QueryImpl *createQuery(GLenum type);
+    virtual FenceImpl *createFence();
 
     // D3D11-renderer specific methods
     ID3D11Device *getDevice() { return mDevice; }
diff --git a/src/libGLESv2/renderer/Renderer9.cpp b/src/libGLESv2/renderer/Renderer9.cpp
index de7c63a..17c1be7 100644
--- a/src/libGLESv2/renderer/Renderer9.cpp
+++ b/src/libGLESv2/renderer/Renderer9.cpp
@@ -27,6 +27,7 @@
 #include "libGLESv2/renderer/VertexBuffer9.h"
 #include "libGLESv2/renderer/IndexBuffer9.h"
 #include "libGLESv2/renderer/Query9.h"
+#include "libGLESv2/renderer/Fence9.h"
 
 #include <sstream>
 
@@ -711,6 +712,11 @@
     return new Query9(this, type);
 }
 
+FenceImpl *Renderer9::createFence()
+{
+    return new Fence9(this);
+}
+
 void Renderer9::setSamplerState(gl::SamplerType type, int index, const gl::SamplerState &samplerState)
 {
     bool *forceSetSamplers = (type == gl::SAMPLER_PIXEL) ? mForceSetPixelSamplerStates : mForceSetVertexSamplerStates;
diff --git a/src/libGLESv2/renderer/Renderer9.h b/src/libGLESv2/renderer/Renderer9.h
index c8b614f..74e383c 100644
--- a/src/libGLESv2/renderer/Renderer9.h
+++ b/src/libGLESv2/renderer/Renderer9.h
@@ -194,8 +194,9 @@
     virtual VertexBuffer *createVertexBuffer();
     virtual IndexBuffer *createIndexBuffer();
 
-    // Query creation
+    // Query and Fence creation
     virtual QueryImpl *createQuery(GLenum type);
+    virtual FenceImpl *createFence();
 
     // D3D9-renderer specific methods
     bool boxFilter(IDirect3DSurface9 *source, IDirect3DSurface9 *dest);