| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrGLGpu.h" | 8 #include "GrGLGpu.h" |
| 9 #include "GrGLBuffer.h" | 9 #include "GrGLBuffer.h" |
| 10 #include "GrGLGpuCommandBuffer.h" | 10 #include "GrGLGpuCommandBuffer.h" |
| (...skipping 3225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3236 | 3236 |
| 3237 if (GrSamplerParams::kMipMap_FilterMode == filterMode) { | 3237 if (GrSamplerParams::kMipMap_FilterMode == filterMode) { |
| 3238 if (!this->caps()->mipMapSupport() || GrPixelConfigIsCompressed(texture-
>config())) { | 3238 if (!this->caps()->mipMapSupport() || GrPixelConfigIsCompressed(texture-
>config())) { |
| 3239 filterMode = GrSamplerParams::kBilerp_FilterMode; | 3239 filterMode = GrSamplerParams::kBilerp_FilterMode; |
| 3240 } | 3240 } |
| 3241 } | 3241 } |
| 3242 | 3242 |
| 3243 newTexParams.fMinFilter = glMinFilterModes[filterMode]; | 3243 newTexParams.fMinFilter = glMinFilterModes[filterMode]; |
| 3244 newTexParams.fMagFilter = glMagFilterModes[filterMode]; | 3244 newTexParams.fMagFilter = glMagFilterModes[filterMode]; |
| 3245 | 3245 |
| 3246 if (GrPixelConfigIsSRGB(texture->config())) { | 3246 if (this->glCaps().srgbDecodeDisableSupport() && GrPixelConfigIsSRGB(texture
->config())) { |
| 3247 newTexParams.fSRGBDecode = allowSRGBInputs ? GR_GL_DECODE_EXT : GR_GL_SK
IP_DECODE_EXT; | 3247 newTexParams.fSRGBDecode = allowSRGBInputs ? GR_GL_DECODE_EXT : GR_GL_SK
IP_DECODE_EXT; |
| 3248 if (setAll || newTexParams.fSRGBDecode != oldTexParams.fSRGBDecode) { | 3248 if (setAll || newTexParams.fSRGBDecode != oldTexParams.fSRGBDecode) { |
| 3249 this->setTextureUnit(unitIdx); | 3249 this->setTextureUnit(unitIdx); |
| 3250 GL_CALL(TexParameteri(target, GR_GL_TEXTURE_SRGB_DECODE_EXT, newTexP
arams.fSRGBDecode)); | 3250 GL_CALL(TexParameteri(target, GR_GL_TEXTURE_SRGB_DECODE_EXT, newTexP
arams.fSRGBDecode)); |
| 3251 } | 3251 } |
| 3252 } | 3252 } |
| 3253 | 3253 |
| 3254 #ifdef SK_DEBUG | 3254 #ifdef SK_DEBUG |
| 3255 // We were supposed to ensure MipMaps were up-to-date and built correctly be
fore getting here. | 3255 // We were supposed to ensure MipMaps were up-to-date and built correctly be
fore getting here. |
| 3256 if (GrSamplerParams::kMipMap_FilterMode == filterMode) { | 3256 if (GrSamplerParams::kMipMap_FilterMode == filterMode) { |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3412 if (texRT) { | 3412 if (texRT) { |
| 3413 this->onResolveRenderTarget(texRT); | 3413 this->onResolveRenderTarget(texRT); |
| 3414 } | 3414 } |
| 3415 | 3415 |
| 3416 GrGLenum target = texture->target(); | 3416 GrGLenum target = texture->target(); |
| 3417 this->setScratchTextureUnit(); | 3417 this->setScratchTextureUnit(); |
| 3418 GL_CALL(BindTexture(target, texture->textureID())); | 3418 GL_CALL(BindTexture(target, texture->textureID())); |
| 3419 | 3419 |
| 3420 // Configure sRGB decode, if necessary. This state is the only thing needed
for the driver | 3420 // Configure sRGB decode, if necessary. This state is the only thing needed
for the driver |
| 3421 // call (glGenerateMipmap) to work correctly. Our manual method dirties othe
r state, too. | 3421 // call (glGenerateMipmap) to work correctly. Our manual method dirties othe
r state, too. |
| 3422 if (GrPixelConfigIsSRGB(texture->config())) { | 3422 if (this->glCaps().srgbDecodeDisableSupport() && GrPixelConfigIsSRGB(texture
->config())) { |
| 3423 GL_CALL(TexParameteri(target, GR_GL_TEXTURE_SRGB_DECODE_EXT, | 3423 GL_CALL(TexParameteri(target, GR_GL_TEXTURE_SRGB_DECODE_EXT, |
| 3424 allowSRGBInputs ? GR_GL_DECODE_EXT : GR_GL_SKIP_DE
CODE_EXT)); | 3424 allowSRGBInputs ? GR_GL_DECODE_EXT : GR_GL_SKIP_DE
CODE_EXT)); |
| 3425 } | 3425 } |
| 3426 | 3426 |
| 3427 // Either do manual mipmap generation or (if that fails), just rely on the d
river: | 3427 // Either do manual mipmap generation or (if that fails), just rely on the d
river: |
| 3428 if (!this->generateMipmap(texture, allowSRGBInputs)) { | 3428 if (!this->generateMipmap(texture, allowSRGBInputs)) { |
| 3429 GL_CALL(GenerateMipmap(target)); | 3429 GL_CALL(GenerateMipmap(target)); |
| 3430 } | 3430 } |
| 3431 | 3431 |
| 3432 texture->texturePriv().dirtyMipMaps(false); | 3432 texture->texturePriv().dirtyMipMaps(false); |
| (...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4689 | 4689 |
| 4690 bool GrGLGpu::waitFence(GrFence fence, uint64_t timeout) const { | 4690 bool GrGLGpu::waitFence(GrFence fence, uint64_t timeout) const { |
| 4691 GrGLenum result; | 4691 GrGLenum result; |
| 4692 GL_CALL_RET(result, ClientWaitSync((GrGLsync)fence, GR_GL_SYNC_FLUSH_COMMAND
S_BIT, timeout)); | 4692 GL_CALL_RET(result, ClientWaitSync((GrGLsync)fence, GR_GL_SYNC_FLUSH_COMMAND
S_BIT, timeout)); |
| 4693 return (GR_GL_CONDITION_SATISFIED == result); | 4693 return (GR_GL_CONDITION_SATISFIED == result); |
| 4694 } | 4694 } |
| 4695 | 4695 |
| 4696 void GrGLGpu::deleteFence(GrFence fence) const { | 4696 void GrGLGpu::deleteFence(GrFence fence) const { |
| 4697 GL_CALL(DeleteSync((GrGLsync)fence)); | 4697 GL_CALL(DeleteSync((GrGLsync)fence)); |
| 4698 } | 4698 } |
| OLD | NEW |