Henri Verbeet : wined3d: Get rid of redundant ARB_occlusion_query checks.

Alexandre Julliard julliard at winehq.org
Thu Jul 21 09:58:58 CDT 2016


Module: wine
Branch: master
Commit: a02c7ce7518b19d401ae854f18d2401a489f60db
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a02c7ce7518b19d401ae854f18d2401a489f60db

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Jul 21 15:58:00 2016 +0200

wined3d: Get rid of redundant ARB_occlusion_query checks.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/query.c | 105 ++++++++++++++++++++++-----------------------------
 1 file changed, 45 insertions(+), 60 deletions(-)

diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
index 0683731..369951d 100644
--- a/dlls/wined3d/query.c
+++ b/dlls/wined3d/query.c
@@ -337,14 +337,6 @@ static HRESULT wined3d_occlusion_query_ops_get_data(struct wined3d_query *query,
         return S_FALSE;
     }
 
-    if (!gl_info->supported[ARB_OCCLUSION_QUERY])
-    {
-        WARN("%p Occlusion queries not supported. Returning 1.\n", query);
-        samples = 1;
-        fill_query_data(data, size, &samples, sizeof(samples));
-        return S_OK;
-    }
-
     if (oq->context->tid != GetCurrentThreadId())
     {
         FIXME("%p Wrong thread, returning 1.\n", query);
@@ -461,77 +453,70 @@ static HRESULT wined3d_event_query_ops_issue(struct wined3d_query *query, DWORD
 
 static HRESULT wined3d_occlusion_query_ops_issue(struct wined3d_query *query, DWORD flags)
 {
+    struct wined3d_occlusion_query *oq = query->extendedData;
     struct wined3d_device *device = query->device;
     const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
+    struct wined3d_context *context;
 
     TRACE("query %p, flags %#x.\n", query, flags);
 
-    if (gl_info->supported[ARB_OCCLUSION_QUERY])
+    /* This is allowed according to MSDN and our tests. Reset the query and
+     * restart. */
+    if (flags & WINED3DISSUE_BEGIN)
     {
-        struct wined3d_occlusion_query *oq = query->extendedData;
-        struct wined3d_context *context;
-
-        /* This is allowed according to msdn and our tests. Reset the query and restart */
-        if (flags & WINED3DISSUE_BEGIN)
+        if (query->state == QUERY_BUILDING)
         {
-            if (query->state == QUERY_BUILDING)
+            if (oq->context->tid != GetCurrentThreadId())
             {
-                if (oq->context->tid != GetCurrentThreadId())
-                {
-                    FIXME("Wrong thread, can't restart query.\n");
-
-                    context_free_occlusion_query(oq);
-                    context = context_acquire(query->device, NULL);
-                    context_alloc_occlusion_query(context, oq);
-                }
-                else
-                {
-                    context = context_acquire(device, context_get_rt_surface(oq->context));
-
-                    GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED));
-                    checkGLcall("glEndQuery()");
-                }
+                FIXME("Wrong thread, can't restart query.\n");
+
+                context_free_occlusion_query(oq);
+                context = context_acquire(query->device, NULL);
+                context_alloc_occlusion_query(context, oq);
             }
             else
             {
-                if (oq->context) context_free_occlusion_query(oq);
-                context = context_acquire(query->device, NULL);
-                context_alloc_occlusion_query(context, oq);
+                context = context_acquire(device, context_get_rt_surface(oq->context));
+
+                GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED));
+                checkGLcall("glEndQuery()");
             }
+        }
+        else
+        {
+            if (oq->context)
+                context_free_occlusion_query(oq);
+            context = context_acquire(query->device, NULL);
+            context_alloc_occlusion_query(context, oq);
+        }
 
-            GL_EXTCALL(glBeginQuery(GL_SAMPLES_PASSED, oq->id));
-            checkGLcall("glBeginQuery()");
+        GL_EXTCALL(glBeginQuery(GL_SAMPLES_PASSED, oq->id));
+        checkGLcall("glBeginQuery()");
 
-            context_release(context);
-        }
-        if (flags & WINED3DISSUE_END)
+        context_release(context);
+    }
+    if (flags & WINED3DISSUE_END)
+    {
+        /* MSDN says END on a non-building occlusion query returns an error,
+         * but our tests show that it returns OK. But OpenGL doesn't like it,
+         * so avoid generating an error. */
+        if (query->state == QUERY_BUILDING)
         {
-            /* Msdn says _END on a non-building occlusion query returns an error, but
-             * our tests show that it returns OK. But OpenGL doesn't like it, so avoid
-             * generating an error
-             */
-            if (query->state == QUERY_BUILDING)
+            if (oq->context->tid != GetCurrentThreadId())
+            {
+                FIXME("Wrong thread, can't end query.\n");
+            }
+            else
             {
-                if (oq->context->tid != GetCurrentThreadId())
-                {
-                    FIXME("Wrong thread, can't end query.\n");
-                }
-                else
-                {
-                    context = context_acquire(device, context_get_rt_surface(oq->context));
-
-                    GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED));
-                    checkGLcall("glEndQuery()");
-
-                    context_release(context);
-                }
+                context = context_acquire(device, context_get_rt_surface(oq->context));
+
+                GL_EXTCALL(glEndQuery(GL_SAMPLES_PASSED));
+                checkGLcall("glEndQuery()");
+
+                context_release(context);
             }
         }
     }
-    else
-    {
-        FIXME("%p Occlusion queries not supported.\n", query);
-    }
 
     if (flags & WINED3DISSUE_BEGIN)
         query->state = QUERY_BUILDING;




More information about the wine-cvs mailing list