Skip to content
  • commit-queue@webkit.org's avatar
    Add error checking into OpenCL version of SVG filters. · a1a49cfc
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=107444
    
    Patch by Tamas Czene <tczene@inf.u-szeged.hu> on 2013-02-12
    Reviewed by Zoltan Herczeg.
    
    In case of an error the program runs through all the remaining filters by doing nothing.
    After that deletes the results of every filter and starts software rendering.
    
    * platform/graphics/filters/FilterEffect.cpp:
    (WebCore):
    (WebCore::FilterEffect::applyAll): At software rendering this is a simple inline methode, but at OpenCL rendering it releases OpenCL things. If we have an error remove filter's results and start software rendering.
    (WebCore::FilterEffect::clearResultsRecursive):
    (WebCore::FilterEffect::openCLImageToImageBuffer):
    (WebCore::FilterEffect::createOpenCLImageResult):
    (WebCore::FilterEffect::transformResultColorSpace):
    * platform/graphics/filters/FilterEffect.h:
    (FilterEffect):
    (WebCore::FilterEffect::applyAll):
    * platform/graphics/gpu/opencl/FilterContextOpenCL.cpp:
    (WebCore::FilterContextOpenCL::isFailed):
    (WebCore):
    (WebCore::FilterContextOpenCL::freeResources):
    (WebCore::FilterContextOpenCL::destroyContext):
    (WebCore::FilterContextOpenCL::compileTransformColorSpaceProgram):
    (WebCore::FilterContextOpenCL::openCLTransformColorSpace):
    (WebCore::FilterContextOpenCL::compileProgram):
    (WebCore::FilterContextOpenCL::freeResource):
    * platform/graphics/gpu/opencl/FilterContextOpenCL.h:
    (WebCore::FilterContextOpenCL::FilterContextOpenCL):
    (WebCore::FilterContextOpenCL::setInError):
    (WebCore::FilterContextOpenCL::inError):
    (FilterContextOpenCL):
    (WebCore::FilterContextOpenCL::RunKernel::RunKernel):
    (WebCore::FilterContextOpenCL::RunKernel::addArgument):
    (WebCore::FilterContextOpenCL::RunKernel::run):
    (RunKernel):
    * platform/graphics/gpu/opencl/OpenCLFEColorMatrix.cpp:
    (WebCore::FilterContextOpenCL::compileFEColorMatrix):
    (WebCore::FEColorMatrix::platformApplyOpenCL):
    * platform/graphics/gpu/opencl/OpenCLFETurbulence.cpp:
    (WebCore::FilterContextOpenCL::compileFETurbulence):
    (WebCore::FETurbulence::platformApplyOpenCL):
    * rendering/svg/RenderSVGResourceFilter.cpp:
    (WebCore::RenderSVGResourceFilter::postApplyResource):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142596 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    a1a49cfc