OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
6 | 6 |
7 #include <stdio.h> | 7 #include <stdio.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <list> | 10 #include <list> |
(...skipping 930 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
941 GLenum target, | 941 GLenum target, |
942 GLint image_id); | 942 GLint image_id); |
943 void DoReleaseTexImage2DCHROMIUM( | 943 void DoReleaseTexImage2DCHROMIUM( |
944 GLenum target, | 944 GLenum target, |
945 GLint image_id); | 945 GLint image_id); |
946 | 946 |
947 void DoTraceEndCHROMIUM(void); | 947 void DoTraceEndCHROMIUM(void); |
948 | 948 |
949 void DoDrawBuffersEXT(GLsizei count, const GLenum* bufs); | 949 void DoDrawBuffersEXT(GLsizei count, const GLenum* bufs); |
950 | 950 |
| 951 void DoLoseContextCHROMIUM(GLenum current, GLenum other); |
| 952 |
951 // Creates a Program for the given program. | 953 // Creates a Program for the given program. |
952 Program* CreateProgram( | 954 Program* CreateProgram( |
953 GLuint client_id, GLuint service_id) { | 955 GLuint client_id, GLuint service_id) { |
954 return program_manager()->CreateProgram(client_id, service_id); | 956 return program_manager()->CreateProgram(client_id, service_id); |
955 } | 957 } |
956 | 958 |
957 // Gets the program info for the given program. Returns NULL if none exists. | 959 // Gets the program info for the given program. Returns NULL if none exists. |
958 Program* GetProgram(GLuint client_id) { | 960 Program* GetProgram(GLuint client_id) { |
959 return program_manager()->GetProgram(client_id); | 961 return program_manager()->GetProgram(client_id); |
960 } | 962 } |
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1709 scoped_ptr<AsyncPixelTransferManager> async_pixel_transfer_manager_; | 1711 scoped_ptr<AsyncPixelTransferManager> async_pixel_transfer_manager_; |
1710 | 1712 |
1711 // The format of the back buffer_ | 1713 // The format of the back buffer_ |
1712 GLenum back_buffer_color_format_; | 1714 GLenum back_buffer_color_format_; |
1713 bool back_buffer_has_depth_; | 1715 bool back_buffer_has_depth_; |
1714 bool back_buffer_has_stencil_; | 1716 bool back_buffer_has_stencil_; |
1715 | 1717 |
1716 // Backbuffer attachments that are currently undefined. | 1718 // Backbuffer attachments that are currently undefined. |
1717 uint32 backbuffer_needs_clear_bits_; | 1719 uint32 backbuffer_needs_clear_bits_; |
1718 | 1720 |
1719 // The current decoder error. | 1721 // The current decoder error communicates the decoder error through command |
| 1722 // processing functions that do not return the error value. Should be set only |
| 1723 // if not returning an error. |
1720 error::Error current_decoder_error_; | 1724 error::Error current_decoder_error_; |
1721 | 1725 |
1722 bool use_shader_translator_; | 1726 bool use_shader_translator_; |
1723 scoped_refptr<ShaderTranslator> vertex_translator_; | 1727 scoped_refptr<ShaderTranslator> vertex_translator_; |
1724 scoped_refptr<ShaderTranslator> fragment_translator_; | 1728 scoped_refptr<ShaderTranslator> fragment_translator_; |
1725 | 1729 |
1726 DisallowedFeatures disallowed_features_; | 1730 DisallowedFeatures disallowed_features_; |
1727 | 1731 |
1728 // Cached from ContextGroup | 1732 // Cached from ContextGroup |
1729 const Validators* validators_; | 1733 const Validators* validators_; |
(...skipping 7707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9437 // Only loses the context once. | 9441 // Only loses the context once. |
9438 if (reset_status_ != GL_NO_ERROR) { | 9442 if (reset_status_ != GL_NO_ERROR) { |
9439 return; | 9443 return; |
9440 } | 9444 } |
9441 | 9445 |
9442 // Marks this context as lost. | 9446 // Marks this context as lost. |
9443 reset_status_ = reset_status; | 9447 reset_status_ = reset_status; |
9444 current_decoder_error_ = error::kLostContext; | 9448 current_decoder_error_ = error::kLostContext; |
9445 } | 9449 } |
9446 | 9450 |
9447 error::Error GLES2DecoderImpl::HandleLoseContextCHROMIUM( | |
9448 uint32 immediate_data_size, const cmds::LoseContextCHROMIUM& c) { | |
9449 GLenum current = static_cast<GLenum>(c.current); | |
9450 GLenum other = static_cast<GLenum>(c.other); | |
9451 if (!validators_->reset_status.IsValid(current)) { | |
9452 LOCAL_SET_GL_ERROR_INVALID_ENUM( | |
9453 "glLoseContextCHROMIUM", current, "current"); | |
9454 } | |
9455 if (!validators_->reset_status.IsValid(other)) { | |
9456 LOCAL_SET_GL_ERROR_INVALID_ENUM("glLoseContextCHROMIUM", other, "other"); | |
9457 } | |
9458 group_->LoseContexts(other); | |
9459 reset_status_ = current; | |
9460 current_decoder_error_ = error::kLostContext; | |
9461 return error::kLostContext; | |
9462 } | |
9463 | |
9464 error::Error GLES2DecoderImpl::HandleInsertSyncPointCHROMIUM( | 9451 error::Error GLES2DecoderImpl::HandleInsertSyncPointCHROMIUM( |
9465 uint32 immediate_data_size, const cmds::InsertSyncPointCHROMIUM& c) { | 9452 uint32 immediate_data_size, const cmds::InsertSyncPointCHROMIUM& c) { |
9466 return error::kUnknownCommand; | 9453 return error::kUnknownCommand; |
9467 } | 9454 } |
9468 | 9455 |
9469 error::Error GLES2DecoderImpl::HandleWaitSyncPointCHROMIUM( | 9456 error::Error GLES2DecoderImpl::HandleWaitSyncPointCHROMIUM( |
9470 uint32 immediate_data_size, const cmds::WaitSyncPointCHROMIUM& c) { | 9457 uint32 immediate_data_size, const cmds::WaitSyncPointCHROMIUM& c) { |
9471 group_->mailbox_manager()->PullTextureUpdates(); | 9458 group_->mailbox_manager()->PullTextureUpdates(); |
9472 if (wait_sync_point_callback_.is_null()) | 9459 if (wait_sync_point_callback_.is_null()) |
9473 return error::kNoError; | 9460 return error::kNoError; |
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10451 GLenum mapped_buf = bufs[0]; | 10438 GLenum mapped_buf = bufs[0]; |
10452 if (GetBackbufferServiceId() != 0 && // emulated backbuffer | 10439 if (GetBackbufferServiceId() != 0 && // emulated backbuffer |
10453 bufs[0] == GL_BACK) { | 10440 bufs[0] == GL_BACK) { |
10454 mapped_buf = GL_COLOR_ATTACHMENT0; | 10441 mapped_buf = GL_COLOR_ATTACHMENT0; |
10455 } | 10442 } |
10456 glDrawBuffersARB(count, &mapped_buf); | 10443 glDrawBuffersARB(count, &mapped_buf); |
10457 group_->set_draw_buffer(bufs[0]); | 10444 group_->set_draw_buffer(bufs[0]); |
10458 } | 10445 } |
10459 } | 10446 } |
10460 | 10447 |
| 10448 void GLES2DecoderImpl::DoLoseContextCHROMIUM(GLenum current, GLenum other) { |
| 10449 group_->LoseContexts(other); |
| 10450 reset_status_ = current; |
| 10451 current_decoder_error_ = error::kLostContext; |
| 10452 } |
| 10453 |
10461 bool GLES2DecoderImpl::ValidateAsyncTransfer( | 10454 bool GLES2DecoderImpl::ValidateAsyncTransfer( |
10462 const char* function_name, | 10455 const char* function_name, |
10463 TextureRef* texture_ref, | 10456 TextureRef* texture_ref, |
10464 GLenum target, | 10457 GLenum target, |
10465 GLint level, | 10458 GLint level, |
10466 const void * data) { | 10459 const void * data) { |
10467 // We only support async uploads to 2D textures for now. | 10460 // We only support async uploads to 2D textures for now. |
10468 if (GL_TEXTURE_2D != target) { | 10461 if (GL_TEXTURE_2D != target) { |
10469 LOCAL_SET_GL_ERROR_INVALID_ENUM(function_name, target, "target"); | 10462 LOCAL_SET_GL_ERROR_INVALID_ENUM(function_name, target, "target"); |
10470 return false; | 10463 return false; |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10769 } | 10762 } |
10770 } | 10763 } |
10771 | 10764 |
10772 // Include the auto-generated part of this file. We split this because it means | 10765 // Include the auto-generated part of this file. We split this because it means |
10773 // we can easily edit the non-auto generated parts right here in this file | 10766 // we can easily edit the non-auto generated parts right here in this file |
10774 // instead of having to edit some template or the code generator. | 10767 // instead of having to edit some template or the code generator. |
10775 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 10768 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
10776 | 10769 |
10777 } // namespace gles2 | 10770 } // namespace gles2 |
10778 } // namespace gpu | 10771 } // namespace gpu |
OLD | NEW |