Add control of manual mipmapping to GrContextOptions

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2054623003

Review-Url: https://codereview.chromium.org/2054623003
This commit is contained in:
brianosman 2016-06-09 09:39:58 -07:00 committed by Commit bot
parent 7ccbc1ad04
commit 97e398d989
2 changed files with 7 additions and 1 deletions

View File

@ -67,6 +67,11 @@ struct GrContextOptions {
/** Force us to do all swizzling manually in the shader and don't rely on extensions to do
swizzling. */
bool fUseShaderSwizzling;
/** Construct mipmaps manually, via repeated downsampling draw-calls. This is used when
the driver's implementation (glGenerateMipmap) contains bugs. This requires mipmap
level and LOD control (ie desktop or ES3). */
bool fDoManualMipmapping;
};
#endif

View File

@ -551,7 +551,8 @@ void GrGLCaps::init(const GrContextOptions& contextOptions,
// glGenerateMipmap. Our implementation requires mip-level sampling control. Additionally,
// it can be much slower (especially on mobile GPUs), so we opt-in only when necessary:
if (fMipMapLevelAndLodControlSupport &&
((kIntel_GrGLVendor == ctxInfo.vendor()) ||
(contextOptions.fDoManualMipmapping ||
(kIntel_GrGLVendor == ctxInfo.vendor()) ||
(kNVIDIA_GrGLDriver == ctxInfo.driver() && isMAC) ||
(kATI_GrGLVendor == ctxInfo.vendor()))) {
fDoManualMipmapping = true;