Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Unified Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 9307102: Fix TexImage2D clearing too agressively (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/service/gles2_cmd_decoder.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index e45d18315cf0ff73d27a3af71f69328f0469a736..2c56c7bb5c5cf5410a8e6ffcb0af50ccac4e5ea2 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -131,14 +131,6 @@ const CommandInfo g_command_info[] = {
#undef GLES2_CMD_OP
};
-static bool IsAngle() {
-#if defined(OS_WIN)
- return gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2;
-#else
- return false;
-#endif
-}
-
// Return true if a character belongs to the ASCII subset as defined in
// GLSL ES 1.0 spec section 3.1.
static bool CharacterIsValidForGLES(unsigned char c) {
@@ -508,6 +500,21 @@ GLES2Decoder::GLES2Decoder()
GLES2Decoder::~GLES2Decoder() {
}
+bool GLES2Decoder::testing_force_is_angle_;
+
+void GLES2Decoder::set_testing_force_is_angle(bool force) {
+ testing_force_is_angle_ = force;
+}
+
+bool GLES2Decoder::IsAngle() {
+#if defined(OS_WIN)
+ return testing_force_is_angle_ ||
+ gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2;
+#else
+ return testing_force_is_angle_;
+#endif
+}
+
// This class implements GLES2Decoder so we don't have to expose all the GLES2
// cmd stuff to outside this class.
class GLES2DecoderImpl : public base::SupportsWeakPtr<GLES2DecoderImpl>,
@@ -1606,7 +1613,7 @@ ScopedResolvedFrameBufferBinder::ScopedResolvedFrameBufferBinder(
const int width = decoder_->offscreen_size_.width();
const int height = decoder_->offscreen_size_.height();
glDisable(GL_SCISSOR_TEST);
- if (IsAngle()) {
+ if (GLES2Decoder::IsAngle()) {
glBlitFramebufferANGLE(0, 0, width, height, 0, 0, width, height,
GL_COLOR_BUFFER_BIT, GL_NEAREST);
} else {
@@ -1746,7 +1753,7 @@ bool RenderBuffer::AllocateStorage(const gfx::Size& size, GLenum format,
size.width(),
size.height());
} else {
- if (IsAngle()) {
+ if (GLES2Decoder::IsAngle()) {
glRenderbufferStorageMultisampleANGLE(GL_RENDERBUFFER,
samples,
format,
@@ -6559,6 +6566,7 @@ error::Error GLES2DecoderImpl::DoTexImage2D(
if (!teximage2d_faster_than_texsubimage2d_ && level_is_same && pixels) {
glTexSubImage2D(target, level, 0, 0, width, height, format, type, pixels);
+ texture_manager()->SetLevelCleared(info, target, level);
tex_image_2d_failed_ = false;
return error::kNoError;
}
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698