зеркало из https://github.com/mozilla/gecko-dev.git
Bug 945655 - Improve FilterNodeSoftware debug logging. r=roc
This commit is contained in:
Родитель
9bb2ea8eed
Коммит
3b7dad0997
|
@ -18,7 +18,6 @@
|
|||
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
#include "gfxImageSurface.h"
|
||||
#include "gfx2DGlue.h"
|
||||
namespace mozilla {
|
||||
namespace gfx {
|
||||
static void
|
||||
|
@ -28,7 +27,8 @@ DumpAsPNG(SourceSurface* aSurface)
|
|||
IntSize size = dataSource->GetSize();
|
||||
nsRefPtr<gfxImageSurface> imageSurface =
|
||||
new gfxImageSurface(dataSource->GetData(), gfxIntSize(size.width, size.height),
|
||||
dataSource->Stride(), SurfaceFormatToImageFormat(aSurface->GetFormat()));
|
||||
dataSource->Stride(),
|
||||
aSurface->GetFormat() == FORMAT_A8 ? gfxImageFormatA8 : gfxImageFormatARGB32);
|
||||
imageSurface->PrintAsDataURL();
|
||||
}
|
||||
} // namespace gfx
|
||||
|
@ -559,7 +559,7 @@ FilterNodeSoftware::Draw(DrawTarget* aDrawTarget,
|
|||
const DrawOptions &aOptions)
|
||||
{
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("<pre>\nRendering...\n");
|
||||
printf("<style>section{margin:10px;}</style><pre>\nRendering filter %s...\n", GetName());
|
||||
#endif
|
||||
|
||||
Rect renderRect = aSourceRect;
|
||||
|
@ -583,7 +583,7 @@ FilterNodeSoftware::Draw(DrawTarget* aDrawTarget,
|
|||
}
|
||||
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("output:\n");
|
||||
printf("output from %s:\n", GetName());
|
||||
printf("<img src='"); DumpAsPNG(result); printf("'>\n");
|
||||
printf("</pre>\n");
|
||||
#endif
|
||||
|
@ -656,7 +656,7 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
|||
const IntRect *aTransparencyPaddedSourceRect)
|
||||
{
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("<h1>GetInputDataSourceSurface with aRect: %d, %d, %d, %d</h1>\n",
|
||||
printf("<section><h1>GetInputDataSourceSurface with aRect: %d, %d, %d, %d</h1>\n",
|
||||
aRect.x, aRect.y, aRect.width, aRect.height);
|
||||
#endif
|
||||
int32_t inputIndex = InputIndex(aInputEnumIndex);
|
||||
|
@ -671,34 +671,42 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
|||
|
||||
RefPtr<SourceSurface> surface;
|
||||
IntRect surfaceRect;
|
||||
|
||||
if (mInputSurfaces[inputIndex]) {
|
||||
// Input from input surface
|
||||
surface = mInputSurfaces[inputIndex];
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("input from input surface:\n");
|
||||
printf("<img src='"); DumpAsPNG(surface); printf("'>\n");
|
||||
#endif
|
||||
surfaceRect = IntRect(IntPoint(0, 0), surface->GetSize());
|
||||
} else {
|
||||
// Input from input filter
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("getting input from input filter %s...\n", mInputFilters[inputIndex]->GetName());
|
||||
#endif
|
||||
RefPtr<FilterNodeSoftware> filter = mInputFilters[inputIndex];
|
||||
MOZ_ASSERT(filter, "missing input");
|
||||
IntRect inputFilterOutput = filter->GetOutputRectInRect(aRect);
|
||||
if (!inputFilterOutput.IsEmpty()) {
|
||||
surface = filter->GetOutput(inputFilterOutput);
|
||||
}
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("input from input filter %s:\n", mInputFilters[inputIndex]->GetName());
|
||||
#endif
|
||||
surfaceRect = inputFilterOutput;
|
||||
MOZ_ASSERT(!surface || surfaceRect.Size() == surface->GetSize());
|
||||
}
|
||||
|
||||
if (surface && surface->GetFormat() == FORMAT_UNKNOWN) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("wrong input format\n\n");
|
||||
printf("wrong input format</section>\n\n");
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!surfaceRect.IsEmpty() && !surface) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf(" -- no input --\n\n");
|
||||
printf(" -- no input --</section>\n\n");
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -714,7 +722,7 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
|||
|
||||
if (!result) {
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf(" -- no input --\n\n");
|
||||
printf(" -- no input --</section>\n\n");
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -732,8 +740,7 @@ FilterNodeSoftware::GetInputDataSourceSurface(uint32_t aInputEnumIndex,
|
|||
}
|
||||
|
||||
#ifdef DEBUG_DUMP_SURFACES
|
||||
printf("input:\n");
|
||||
printf("<img src='"); DumpAsPNG(result); printf("'>\n");
|
||||
printf("<img src='"); DumpAsPNG(result); printf("'></section>");
|
||||
#endif
|
||||
|
||||
MOZ_ASSERT(!result || result->GetSize() == aRect.Size(), "wrong surface size");
|
||||
|
|
|
@ -51,6 +51,8 @@ public:
|
|||
virtual void SetInput(uint32_t aIndex, SourceSurface *aSurface) MOZ_OVERRIDE;
|
||||
virtual void SetInput(uint32_t aIndex, FilterNode *aFilter) MOZ_OVERRIDE;
|
||||
|
||||
virtual const char* GetName() { return "Unknown"; }
|
||||
|
||||
virtual void AddInvalidationListener(FilterInvalidationListener* aListener);
|
||||
virtual void RemoveInvalidationListener(FilterInvalidationListener* aListener);
|
||||
|
||||
|
@ -216,6 +218,7 @@ class FilterNodeTransformSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeTransformSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Transform"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aGraphicsFilter) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Matrix &aMatrix) MOZ_OVERRIDE;
|
||||
|
@ -236,6 +239,7 @@ class FilterNodeBlendSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeBlendSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Blend"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aBlendMode) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -253,6 +257,7 @@ class FilterNodeMorphologySoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeMorphologySoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Morphology"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntSize &aRadii) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aOperator) MOZ_OVERRIDE;
|
||||
|
@ -271,6 +276,7 @@ private:
|
|||
class FilterNodeColorMatrixSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "ColorMatrix"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Matrix5x4 &aMatrix) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aAlphaMode) MOZ_OVERRIDE;
|
||||
|
@ -289,6 +295,7 @@ private:
|
|||
class FilterNodeFloodSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Flood"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Color &aColor) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -304,6 +311,7 @@ private:
|
|||
class FilterNodeTileSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Tile"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntRect &aSourceRect) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -346,6 +354,7 @@ protected:
|
|||
class FilterNodeTableTransferSoftware : public FilterNodeComponentTransferSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "TableTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -364,6 +373,7 @@ private:
|
|||
class FilterNodeDiscreteTransferSoftware : public FilterNodeComponentTransferSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "DiscreteTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -383,6 +393,7 @@ class FilterNodeLinearTransferSoftware : public FilterNodeComponentTransferSoftw
|
|||
{
|
||||
public:
|
||||
FilterNodeLinearTransferSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "LinearTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aValue) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -406,6 +417,7 @@ class FilterNodeGammaTransferSoftware : public FilterNodeComponentTransferSoftwa
|
|||
{
|
||||
public:
|
||||
FilterNodeGammaTransferSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "GammaTransfer"; }
|
||||
using FilterNodeComponentTransferSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aValue) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -433,6 +445,7 @@ class FilterNodeConvolveMatrixSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeConvolveMatrixSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "ConvolveMatrix"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntSize &aKernelSize) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aMatrix, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
@ -473,6 +486,7 @@ class FilterNodeDisplacementMapSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeDisplacementMapSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "DisplacementMap"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aScale) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aValue) MOZ_OVERRIDE;
|
||||
|
@ -495,6 +509,7 @@ class FilterNodeTurbulenceSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeTurbulenceSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Turbulence"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Size &aSize) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const IntRect &aRenderRect) MOZ_OVERRIDE;
|
||||
|
@ -519,6 +534,7 @@ class FilterNodeArithmeticCombineSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeArithmeticCombineSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "ArithmeticCombine"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Float* aFloat, uint32_t aSize) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -539,6 +555,7 @@ class FilterNodeCompositeSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeCompositeSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Composite"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aOperator) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -571,6 +588,7 @@ class FilterNodeGaussianBlurSoftware : public FilterNodeBlurXYSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeGaussianBlurSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "GaussianBlur"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aStdDeviation) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -585,6 +603,7 @@ class FilterNodeDirectionalBlurSoftware : public FilterNodeBlurXYSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeDirectionalBlurSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "DirectionalBlur"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float aStdDeviation) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, uint32_t aBlurDirection) MOZ_OVERRIDE;
|
||||
|
@ -600,6 +619,7 @@ private:
|
|||
class FilterNodeCropSoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Crop"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Rect &aSourceRect) MOZ_OVERRIDE;
|
||||
|
||||
|
@ -615,6 +635,8 @@ private:
|
|||
|
||||
class FilterNodePremultiplySoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Premultiply"; }
|
||||
protected:
|
||||
virtual TemporaryRef<DataSourceSurface> Render(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
virtual IntRect GetOutputRectInRect(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
|
@ -624,6 +646,8 @@ protected:
|
|||
|
||||
class FilterNodeUnpremultiplySoftware : public FilterNodeSoftware
|
||||
{
|
||||
public:
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Unpremultiply"; }
|
||||
protected:
|
||||
virtual TemporaryRef<DataSourceSurface> Render(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
virtual IntRect GetOutputRectInRect(const IntRect& aRect) MOZ_OVERRIDE;
|
||||
|
@ -636,6 +660,7 @@ class FilterNodeLightingSoftware : public FilterNodeSoftware
|
|||
{
|
||||
public:
|
||||
FilterNodeLightingSoftware();
|
||||
virtual const char* GetName() MOZ_OVERRIDE { return "Lighting"; }
|
||||
using FilterNodeSoftware::SetAttribute;
|
||||
virtual void SetAttribute(uint32_t aIndex, Float) MOZ_OVERRIDE;
|
||||
virtual void SetAttribute(uint32_t aIndex, const Size &) MOZ_OVERRIDE;
|
||||
|
|
Загрузка…
Ссылка в новой задаче