<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [Win][Direct2D] Improve support for filters"
   href="https://bugs.webkit.org/show_bug.cgi?id=163898">163898</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[Win][Direct2D] Improve support for filters
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>WebKit Nightly Build
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>WebCore Misc.
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>bfulgham&#64;webkit.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Tests (like MotionMark) that use CSS filters and other effects currently fail under Direct2D on Windows because Direct2D expects certain operations (such as clipping) to only occur during drawing calls (i.e., inside a &quot;BeginDraw&quot;, &quot;EndDraw&quot; pair).

This patch does the following:
1. Uses a smart pointer for Direct2D native path types to reduce memory leaks.
2. Adds a &quot;BeginDraw&quot; call in the Filter code at the start of filter drawing.
3. Adds an &quot;EndDraw&quot; call in the Filter code when drawing is finished.
4. Adds a new &quot;temporaryBeginDrawIfNeeded&quot; method to enter a draw operation if needed to execute the drawing commands needed during a filter or canvas drawing operation.
5. Improve performance by creating a single GDI Interop object for the Direct2D device instead of creating one every time a GDI drawing operation is needed.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>