Hash :
62342590
Author :
Date :
2015-06-18T17:29:52
Revert "Add workaround for flushing before readPixels." This reverts commit 46c13a15fa90130eca14301a4ef6deed12315037. Seems to have introduced significant flakiness on the Windows AMD FYI bot. Reverting while investigating. Change-Id: I9cfdb09a4a0d792a0c5db76c8b0b9d3285c0695a Reviewed-on: https://chromium-review.googlesource.com/280365 Tested-by: Kenneth Russell <kbr@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
//
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// angletypes.h: Workarounds for driver bugs and other issues.
#ifndef LIBANGLE_RENDERER_WORKAROUNDS_H_
#define LIBANGLE_RENDERER_WORKAROUNDS_H_
// TODO(jmadill,zmo,geofflang): make a workarounds library that can operate
// independent of ANGLE's renderer. Workarounds should also be accessible
// outside of the Renderer.
namespace rx
{
struct D3DCompilerWorkarounds : angle::NonCopyable
{
D3DCompilerWorkarounds()
: skipOptimization(false),
useMaxOptimization(false),
enableIEEEStrictness(false)
{}
void reset()
{
skipOptimization = false;
useMaxOptimization = false;
enableIEEEStrictness = false;
}
bool skipOptimization;
bool useMaxOptimization;
// IEEE strictness needs to be enabled for NANs to work.
bool enableIEEEStrictness;
};
struct Workarounds
{
Workarounds()
: mrtPerfWorkaround(false),
setDataFasterThanImageUpload(false),
zeroMaxLodWorkaround(false),
useInstancedPointSpriteEmulation(false)
{}
// On some systems, having extra rendertargets than necessary slows down the shader.
// We can fix this by optimizing those out of the shader. At the same time, we can
// work around a bug on some nVidia drivers that they ignore "null" render targets
// in D3D11, by compacting the active color attachments list to omit null entries.
bool mrtPerfWorkaround;
bool setDataFasterThanImageUpload;
// Some renderers can't disable mipmaps on a mipmapped texture (i.e. solely sample from level zero, and ignore the other levels).
// D3D11 Feature Level 10+ does this by setting MaxLOD to 0.0f in the Sampler state. D3D9 sets D3DSAMP_MIPFILTER to D3DTEXF_NONE.
// There is no equivalent to this in D3D11 Feature Level 9_3.
// This causes problems when (for example) an application creates a mipmapped texture2D, but sets GL_TEXTURE_MIN_FILTER to GL_NEAREST (i.e disables mipmaps).
// To work around this, D3D11 FL9_3 has to create two copies of the texture. The textures' level zeros are identical, but only one texture has mips.
bool zeroMaxLodWorkaround;
// Some renderers do not support Geometry Shaders so the Geometry Shader-based
// PointSprite emulation will not work.
// To work around this, D3D11 FL9_3 has to use a different pointsprite
// emulation that is implemented using instanced quads.
bool useInstancedPointSpriteEmulation;
};
}
#endif // LIBANGLE_RENDERER_WORKAROUNDS_H_