Fix WebGLShaderPrecisionFormat issue.
authorYongGeol Jung <yg48.jung@samsung.com>
Wed, 17 Apr 2013 12:36:04 +0000 (21:36 +0900)
committerYongGeol Jung <yg48.jung@samsung.com>
Wed, 17 Apr 2013 13:04:09 +0000 (22:04 +0900)
[Title] Fix WebGLShaderPrecisionFormat issue.
[Issue#] TWEB-1124
[Problem] WebGLSharedPrecisionFormat returns wrong value.
[Cause] getShaderPrecisionFormat function was not implemented.
[Solution] Implement it.

Change-Id: Iceee233dc86df524d9cf02f2f73dcdedd55772cd

Source/WebCore/html/canvas/WebGLRenderingContext.cpp
Source/WebCore/platform/graphics/efl/tizen/GraphicsContext3DInternal.cpp
Source/WebCore/platform/graphics/efl/tizen/GraphicsContext3DInternal.h
Source/WebCore/platform/graphics/efl/tizen/TizenGraphicsContext3DEfl.cpp

index 3654882..63c0c23 100755 (executable)
@@ -2802,10 +2802,7 @@ PassRefPtr<WebGLShaderPrecisionFormat> WebGLRenderingContext::getShaderPrecision
 
     GC3Dint range[2] = {0, 0};
     GC3Dint precision = 0;
-#if !ENABLE(TIZEN_DAILY_UPVERSIONING)
-    // FIXME: getShaderPrecisionFormat() should be implemented.
     m_context->getShaderPrecisionFormat(shaderType, precisionType, range, &precision);
-#endif
     return WebGLShaderPrecisionFormat::create(range[0], range[1], precision);
 }
 
index a19c166..04124bf 100755 (executable)
@@ -660,6 +660,15 @@ String GraphicsContext3DInternal::getShaderInfoLog(Platform3DObject shader)
     return res;
 }
 
+void GraphicsContext3DInternal::getShaderPrecisionFormat(GC3Denum shaderType, GC3Denum precisionType, GC3Dint* range, GC3Dint* precision)
+{
+    ASSERT(range);
+    ASSERT(precision);
+
+    makeContextCurrent();
+    GL_CMD(glGetShaderPrecisionFormat(shaderType, precisionType, range, precision));
+}
+
 String GraphicsContext3DInternal::getShaderSource(Platform3DObject shader)
 {
     makeContextCurrent();
index b80d4c0..cb10e5f 100755 (executable)
@@ -137,7 +137,7 @@ public:
     virtual void getRenderbufferParameteriv(GC3Denum target, GC3Denum pname, GC3Dint* value);
     virtual void getShaderiv(Platform3DObject, GC3Denum pname, GC3Dint* value);
     virtual String getShaderInfoLog(Platform3DObject);
-
+    virtual void getShaderPrecisionFormat(GC3Denum shaderType, GC3Denum precisionType, GC3Dint* range, GC3Dint* precision);
     virtual String getShaderSource(Platform3DObject);
     virtual String getString(GC3Denum name);
     virtual void getTexParameterfv(GC3Denum target, GC3Denum pname, GC3Dfloat* value);
index 90f40f3..00bfdf9 100644 (file)
@@ -399,6 +399,11 @@ String GraphicsContext3D::getShaderInfoLog(Platform3DObject shader)
     return m_internal->getShaderInfoLog(shader);
 }
 
+void GraphicsContext3D::getShaderPrecisionFormat(GC3Denum shaderType, GC3Denum precisionType, GC3Dint* range, GC3Dint* precision)
+{
+    return m_internal->getShaderPrecisionFormat(shaderType, precisionType, range, precision);
+}
+
 String GraphicsContext3D::getShaderSource(Platform3DObject shader)
 {
     return m_internal->getShaderSource(shader);