mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 22:05:44 +00:00
Bug 628173 - Part 1: Update CanvasLayerD3D9 to respect surface content type. r=jrmuizel a=blocking-final
This commit is contained in:
parent
52373ae11b
commit
a50d7fec39
@ -191,6 +191,12 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
|
||||
sourceStride = sourceSurface->Stride();
|
||||
}
|
||||
|
||||
if (sourceSurface->Format() != gfxASurface::ImageFormatARGB32) {
|
||||
mHasAlpha = false;
|
||||
} else {
|
||||
mHasAlpha = true;
|
||||
}
|
||||
|
||||
for (int y = 0; y < aRect.height; y++) {
|
||||
memcpy((PRUint8*)lockedRect.pBits + lockedRect.Pitch * y,
|
||||
startBits + sourceStride * y,
|
||||
@ -229,7 +235,11 @@ CanvasLayerD3D9::RenderLayer()
|
||||
|
||||
SetShaderTransformAndOpacity();
|
||||
|
||||
mD3DManager->SetShaderMode(DeviceManagerD3D9::RGBALAYER);
|
||||
if (mHasAlpha) {
|
||||
mD3DManager->SetShaderMode(DeviceManagerD3D9::RGBALAYER);
|
||||
} else {
|
||||
mD3DManager->SetShaderMode(DeviceManagerD3D9::RGBLAYER);
|
||||
}
|
||||
|
||||
if (mFilter == gfxPattern::FILTER_NEAREST) {
|
||||
device()->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
|
||||
|
@ -52,10 +52,11 @@ class THEBES_API CanvasLayerD3D9 :
|
||||
{
|
||||
public:
|
||||
CanvasLayerD3D9(LayerManagerD3D9 *aManager)
|
||||
: CanvasLayer(aManager, NULL),
|
||||
LayerD3D9(aManager),
|
||||
mDataIsPremultiplied(PR_FALSE),
|
||||
mNeedsYFlip(PR_FALSE)
|
||||
: CanvasLayer(aManager, NULL)
|
||||
, LayerD3D9(aManager)
|
||||
, mDataIsPremultiplied(PR_FALSE)
|
||||
, mNeedsYFlip(PR_FALSE)
|
||||
, mHasAlpha(PR_TRUE)
|
||||
{
|
||||
mImplData = static_cast<LayerD3D9*>(this);
|
||||
aManager->deviceManager()->mLayersWithResources.AppendElement(this);
|
||||
@ -86,6 +87,7 @@ protected:
|
||||
|
||||
PRPackedBool mDataIsPremultiplied;
|
||||
PRPackedBool mNeedsYFlip;
|
||||
PRPackedBool mHasAlpha;
|
||||
};
|
||||
|
||||
} /* layers */
|
||||
|
Loading…
Reference in New Issue
Block a user