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 <cmath> | 10 #include <cmath> |
(...skipping 1871 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1882 | 1882 |
1883 // All the state for this context. | 1883 // All the state for this context. |
1884 ContextState state_; | 1884 ContextState state_; |
1885 | 1885 |
1886 // Current width and height of the offscreen frame buffer. | 1886 // Current width and height of the offscreen frame buffer. |
1887 gfx::Size offscreen_size_; | 1887 gfx::Size offscreen_size_; |
1888 | 1888 |
1889 // Util to help with GL. | 1889 // Util to help with GL. |
1890 GLES2Util util_; | 1890 GLES2Util util_; |
1891 | 1891 |
1892 // unpack flip y as last set by glPixelStorei | |
1893 bool unpack_flip_y_; | |
1894 | |
1895 // unpack (un)premultiply alpha as last set by glPixelStorei | |
1896 bool unpack_premultiply_alpha_; | |
1897 bool unpack_unpremultiply_alpha_; | |
1898 | |
1899 // The buffer we bind to attrib 0 since OpenGL requires it (ES does not). | 1892 // The buffer we bind to attrib 0 since OpenGL requires it (ES does not). |
1900 GLuint attrib_0_buffer_id_; | 1893 GLuint attrib_0_buffer_id_; |
1901 | 1894 |
1902 // The value currently in attrib_0. | 1895 // The value currently in attrib_0. |
1903 Vec4 attrib_0_value_; | 1896 Vec4 attrib_0_value_; |
1904 | 1897 |
1905 // Whether or not the attrib_0 buffer holds the attrib_0_value. | 1898 // Whether or not the attrib_0 buffer holds the attrib_0_value. |
1906 bool attrib_0_buffer_matches_value_; | 1899 bool attrib_0_buffer_matches_value_; |
1907 | 1900 |
1908 // The size of attrib 0. | 1901 // The size of attrib 0. |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2501 | 2494 |
2502 GLES2Decoder* GLES2Decoder::Create(ContextGroup* group) { | 2495 GLES2Decoder* GLES2Decoder::Create(ContextGroup* group) { |
2503 return new GLES2DecoderImpl(group); | 2496 return new GLES2DecoderImpl(group); |
2504 } | 2497 } |
2505 | 2498 |
2506 GLES2DecoderImpl::GLES2DecoderImpl(ContextGroup* group) | 2499 GLES2DecoderImpl::GLES2DecoderImpl(ContextGroup* group) |
2507 : GLES2Decoder(), | 2500 : GLES2Decoder(), |
2508 group_(group), | 2501 group_(group), |
2509 logger_(&debug_marker_manager_), | 2502 logger_(&debug_marker_manager_), |
2510 state_(group_->feature_info(), this, &logger_), | 2503 state_(group_->feature_info(), this, &logger_), |
2511 unpack_flip_y_(false), | |
2512 unpack_premultiply_alpha_(false), | |
2513 unpack_unpremultiply_alpha_(false), | |
2514 attrib_0_buffer_id_(0), | 2504 attrib_0_buffer_id_(0), |
2515 attrib_0_buffer_matches_value_(true), | 2505 attrib_0_buffer_matches_value_(true), |
2516 attrib_0_size_(0), | 2506 attrib_0_size_(0), |
2517 fixed_attrib_buffer_id_(0), | 2507 fixed_attrib_buffer_id_(0), |
2518 fixed_attrib_buffer_size_(0), | 2508 fixed_attrib_buffer_size_(0), |
2519 offscreen_target_color_format_(0), | 2509 offscreen_target_color_format_(0), |
2520 offscreen_target_depth_format_(0), | 2510 offscreen_target_depth_format_(0), |
2521 offscreen_target_stencil_format_(0), | 2511 offscreen_target_stencil_format_(0), |
2522 offscreen_target_samples_(0), | 2512 offscreen_target_samples_(0), |
2523 offscreen_target_buffer_preserved_(true), | 2513 offscreen_target_buffer_preserved_(true), |
(...skipping 2761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5285 *num_written = 1; | 5275 *num_written = 1; |
5286 if (params) { | 5276 if (params) { |
5287 TextureUnit& unit = state_.texture_units[state_.active_texture_unit]; | 5277 TextureUnit& unit = state_.texture_units[state_.active_texture_unit]; |
5288 if (unit.bound_texture_rectangle_arb.get()) { | 5278 if (unit.bound_texture_rectangle_arb.get()) { |
5289 *params = unit.bound_texture_rectangle_arb->client_id(); | 5279 *params = unit.bound_texture_rectangle_arb->client_id(); |
5290 } else { | 5280 } else { |
5291 *params = 0; | 5281 *params = 0; |
5292 } | 5282 } |
5293 } | 5283 } |
5294 return true; | 5284 return true; |
5295 case GL_UNPACK_FLIP_Y_CHROMIUM: | |
5296 *num_written = 1; | |
5297 if (params) { | |
5298 params[0] = unpack_flip_y_; | |
5299 } | |
5300 return true; | |
5301 case GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM: | |
5302 *num_written = 1; | |
5303 if (params) { | |
5304 params[0] = unpack_premultiply_alpha_; | |
5305 } | |
5306 return true; | |
5307 case GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM: | |
5308 *num_written = 1; | |
5309 if (params) { | |
5310 params[0] = unpack_unpremultiply_alpha_; | |
5311 } | |
5312 return true; | |
5313 case GL_BIND_GENERATES_RESOURCE_CHROMIUM: | 5285 case GL_BIND_GENERATES_RESOURCE_CHROMIUM: |
5314 *num_written = 1; | 5286 *num_written = 1; |
5315 if (params) { | 5287 if (params) { |
5316 params[0] = group_->bind_generates_resource() ? 1 : 0; | 5288 params[0] = group_->bind_generates_resource() ? 1 : 0; |
5317 } | 5289 } |
5318 return true; | 5290 return true; |
5319 default: | 5291 default: |
5320 if (pname >= GL_DRAW_BUFFER0_ARB && | 5292 if (pname >= GL_DRAW_BUFFER0_ARB && |
5321 pname < GL_DRAW_BUFFER0_ARB + group_->max_draw_buffers()) { | 5293 pname < GL_DRAW_BUFFER0_ARB + group_->max_draw_buffers()) { |
5322 *num_written = 1; | 5294 *num_written = 1; |
(...skipping 3167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8490 } | 8462 } |
8491 switch (pname) { | 8463 switch (pname) { |
8492 case GL_PACK_ALIGNMENT: | 8464 case GL_PACK_ALIGNMENT: |
8493 case GL_UNPACK_ALIGNMENT: | 8465 case GL_UNPACK_ALIGNMENT: |
8494 if (!validators_->pixel_store_alignment.IsValid(param)) { | 8466 if (!validators_->pixel_store_alignment.IsValid(param)) { |
8495 LOCAL_SET_GL_ERROR( | 8467 LOCAL_SET_GL_ERROR( |
8496 GL_INVALID_VALUE, "glPixelStorei", "param GL_INVALID_VALUE"); | 8468 GL_INVALID_VALUE, "glPixelStorei", "param GL_INVALID_VALUE"); |
8497 return error::kNoError; | 8469 return error::kNoError; |
8498 } | 8470 } |
8499 break; | 8471 break; |
8500 case GL_UNPACK_FLIP_Y_CHROMIUM: | |
8501 unpack_flip_y_ = (param != 0); | |
8502 return error::kNoError; | |
8503 case GL_UNPACK_PREMULTIPLY_ALPHA_CHROMIUM: | |
8504 unpack_premultiply_alpha_ = (param != 0); | |
8505 return error::kNoError; | |
8506 case GL_UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM: | |
8507 unpack_unpremultiply_alpha_ = (param != 0); | |
8508 return error::kNoError; | |
8509 default: | 8472 default: |
8510 break; | 8473 break; |
8511 } | 8474 } |
8512 glPixelStorei(pname, param); | 8475 glPixelStorei(pname, param); |
8513 switch (pname) { | 8476 switch (pname) { |
8514 case GL_PACK_ALIGNMENT: | 8477 case GL_PACK_ALIGNMENT: |
8515 state_.pack_alignment = param; | 8478 state_.pack_alignment = param; |
8516 break; | 8479 break; |
8517 case GL_PACK_REVERSE_ROW_ORDER_ANGLE: | 8480 case GL_PACK_REVERSE_ROW_ORDER_ANGLE: |
8518 state_.pack_reverse_row_order = (param != 0); | 8481 state_.pack_reverse_row_order = (param != 0); |
(...skipping 3507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12026 GLenum target, | 11989 GLenum target, |
12027 GLuint source_id, | 11990 GLuint source_id, |
12028 GLuint dest_id, | 11991 GLuint dest_id, |
12029 GLenum internal_format, | 11992 GLenum internal_format, |
12030 GLenum dest_type, | 11993 GLenum dest_type, |
12031 GLboolean unpack_flip_y, | 11994 GLboolean unpack_flip_y, |
12032 GLboolean unpack_premultiply_alpha, | 11995 GLboolean unpack_premultiply_alpha, |
12033 GLboolean unpack_unmultiply_alpha) { | 11996 GLboolean unpack_unmultiply_alpha) { |
12034 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCopyTextureCHROMIUM"); | 11997 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCopyTextureCHROMIUM"); |
12035 | 11998 |
12036 // TODO(zmo): Get rid of the following three lines when we begin to pass | |
12037 // in meaningful data to these three arguments in blink. | |
12038 unpack_flip_y = unpack_flip_y_; | |
12039 unpack_premultiply_alpha = unpack_premultiply_alpha_; | |
12040 unpack_unmultiply_alpha = unpack_unpremultiply_alpha_; | |
12041 | |
12042 TextureRef* source_texture_ref = GetTexture(source_id); | 11999 TextureRef* source_texture_ref = GetTexture(source_id); |
12043 TextureRef* dest_texture_ref = GetTexture(dest_id); | 12000 TextureRef* dest_texture_ref = GetTexture(dest_id); |
12044 Texture* source_texture = source_texture_ref->texture(); | 12001 Texture* source_texture = source_texture_ref->texture(); |
12045 Texture* dest_texture = dest_texture_ref->texture(); | 12002 Texture* dest_texture = dest_texture_ref->texture(); |
12046 int source_width = 0; | 12003 int source_width = 0; |
12047 int source_height = 0; | 12004 int source_height = 0; |
12048 gfx::GLImage* image = | 12005 gfx::GLImage* image = |
12049 source_texture->GetLevelImage(source_texture->target(), 0); | 12006 source_texture->GetLevelImage(source_texture->target(), 0); |
12050 if (image) { | 12007 if (image) { |
12051 gfx::Size size = image->GetSize(); | 12008 gfx::Size size = image->GetSize(); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12196 GLint yoffset, | 12153 GLint yoffset, |
12197 GLint x, | 12154 GLint x, |
12198 GLint y, | 12155 GLint y, |
12199 GLsizei width, | 12156 GLsizei width, |
12200 GLsizei height, | 12157 GLsizei height, |
12201 GLboolean unpack_flip_y, | 12158 GLboolean unpack_flip_y, |
12202 GLboolean unpack_premultiply_alpha, | 12159 GLboolean unpack_premultiply_alpha, |
12203 GLboolean unpack_unmultiply_alpha) { | 12160 GLboolean unpack_unmultiply_alpha) { |
12204 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCopySubTextureCHROMIUM"); | 12161 TRACE_EVENT0("gpu", "GLES2DecoderImpl::DoCopySubTextureCHROMIUM"); |
12205 | 12162 |
12206 // TODO(zmo): Get rid of the following three lines when we begin to pass | |
12207 // in meaningful data to these three arguments in blink. | |
12208 unpack_flip_y = unpack_flip_y_; | |
12209 unpack_premultiply_alpha = unpack_premultiply_alpha_; | |
12210 unpack_unmultiply_alpha = unpack_unpremultiply_alpha_; | |
12211 | |
12212 TextureRef* source_texture_ref = GetTexture(source_id); | 12163 TextureRef* source_texture_ref = GetTexture(source_id); |
12213 TextureRef* dest_texture_ref = GetTexture(dest_id); | 12164 TextureRef* dest_texture_ref = GetTexture(dest_id); |
12214 Texture* source_texture = source_texture_ref->texture(); | 12165 Texture* source_texture = source_texture_ref->texture(); |
12215 Texture* dest_texture = dest_texture_ref->texture(); | 12166 Texture* dest_texture = dest_texture_ref->texture(); |
12216 int source_width = 0; | 12167 int source_width = 0; |
12217 int source_height = 0; | 12168 int source_height = 0; |
12218 gfx::GLImage* image = | 12169 gfx::GLImage* image = |
12219 source_texture->GetLevelImage(source_texture->target(), 0); | 12170 source_texture->GetLevelImage(source_texture->target(), 0); |
12220 if (image) { | 12171 if (image) { |
12221 gfx::Size size = image->GetSize(); | 12172 gfx::Size size = image->GetSize(); |
(...skipping 1505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13727 } | 13678 } |
13728 } | 13679 } |
13729 | 13680 |
13730 // Include the auto-generated part of this file. We split this because it means | 13681 // Include the auto-generated part of this file. We split this because it means |
13731 // we can easily edit the non-auto generated parts right here in this file | 13682 // we can easily edit the non-auto generated parts right here in this file |
13732 // instead of having to edit some template or the code generator. | 13683 // instead of having to edit some template or the code generator. |
13733 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" | 13684 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" |
13734 | 13685 |
13735 } // namespace gles2 | 13686 } // namespace gles2 |
13736 } // namespace gpu | 13687 } // namespace gpu |
OLD | NEW |