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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 1913813002: command_buffer: Check draw FBO for path rendering draw functions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lazy-bindframebuffer-01-remove-glbegin-glend-workaround
Patch Set: rebase Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <limits.h> 7 #include <limits.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 15709 matching lines...) Expand 10 before | Expand all | Expand 10 after
15720 return error::kNoError; 15720 return error::kNoError;
15721 } 15721 }
15722 15722
15723 glPathParameteriNV(service_id, pname, value); 15723 glPathParameteriNV(service_id, pname, value);
15724 return error::kNoError; 15724 return error::kNoError;
15725 } 15725 }
15726 15726
15727 error::Error GLES2DecoderImpl::HandleStencilFillPathCHROMIUM( 15727 error::Error GLES2DecoderImpl::HandleStencilFillPathCHROMIUM(
15728 uint32_t immediate_data_size, 15728 uint32_t immediate_data_size,
15729 const void* cmd_data) { 15729 const void* cmd_data) {
15730 static const char kFunctionName[] = "glStencilFillPathCHROMIUM";
15730 const gles2::cmds::StencilFillPathCHROMIUM& c = 15731 const gles2::cmds::StencilFillPathCHROMIUM& c =
15731 *static_cast<const gles2::cmds::StencilFillPathCHROMIUM*>(cmd_data); 15732 *static_cast<const gles2::cmds::StencilFillPathCHROMIUM*>(cmd_data);
15732 if (!features().chromium_path_rendering) 15733 if (!features().chromium_path_rendering)
15733 return error::kUnknownCommand; 15734 return error::kUnknownCommand;
15734 PathCommandValidatorContext v(this, "glStencilFillPathCHROMIUM"); 15735 PathCommandValidatorContext v(this, kFunctionName);
15735 GLenum fill_mode = GL_COUNT_UP_CHROMIUM; 15736 GLenum fill_mode = GL_COUNT_UP_CHROMIUM;
15736 GLuint mask = 0; 15737 GLuint mask = 0;
15737 if (!v.GetFillModeAndMask(c, &fill_mode, &mask)) 15738 if (!v.GetFillModeAndMask(c, &fill_mode, &mask))
15738 return v.error(); 15739 return v.error();
15739 GLuint service_id = 0; 15740 GLuint service_id = 0;
15740 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) { 15741 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) {
15741 // "If /path/ does not name an existing path object, the command does 15742 // "If /path/ does not name an existing path object, the command does
15742 // nothing (and no error is generated)." 15743 // nothing (and no error is generated)."
15743 // This holds for other rendering functions, too. 15744 // This holds for other rendering functions, too.
15744 return error::kNoError; 15745 return error::kNoError;
15745 } 15746 }
15747 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15748 return error::kNoError;
15746 ApplyDirtyState(); 15749 ApplyDirtyState();
15747 glStencilFillPathNV(service_id, fill_mode, mask); 15750 glStencilFillPathNV(service_id, fill_mode, mask);
15748 return error::kNoError; 15751 return error::kNoError;
15749 } 15752 }
15750 15753
15751 error::Error GLES2DecoderImpl::HandleStencilStrokePathCHROMIUM( 15754 error::Error GLES2DecoderImpl::HandleStencilStrokePathCHROMIUM(
15752 uint32_t immediate_data_size, 15755 uint32_t immediate_data_size,
15753 const void* cmd_data) { 15756 const void* cmd_data) {
15757 static const char kFunctionName[] = "glStencilStrokePathCHROMIUM";
15754 const gles2::cmds::StencilStrokePathCHROMIUM& c = 15758 const gles2::cmds::StencilStrokePathCHROMIUM& c =
15755 *static_cast<const gles2::cmds::StencilStrokePathCHROMIUM*>(cmd_data); 15759 *static_cast<const gles2::cmds::StencilStrokePathCHROMIUM*>(cmd_data);
15756 if (!features().chromium_path_rendering) 15760 if (!features().chromium_path_rendering)
15757 return error::kUnknownCommand; 15761 return error::kUnknownCommand;
15758 15762
15759 GLuint service_id = 0; 15763 GLuint service_id = 0;
15760 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) { 15764 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) {
15761 return error::kNoError; 15765 return error::kNoError;
15762 } 15766 }
15763 GLint reference = static_cast<GLint>(c.reference); 15767 GLint reference = static_cast<GLint>(c.reference);
15764 GLuint mask = static_cast<GLuint>(c.mask); 15768 GLuint mask = static_cast<GLuint>(c.mask);
15769 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15770 return error::kNoError;
15765 ApplyDirtyState(); 15771 ApplyDirtyState();
15766 glStencilStrokePathNV(service_id, reference, mask); 15772 glStencilStrokePathNV(service_id, reference, mask);
15767 return error::kNoError; 15773 return error::kNoError;
15768 } 15774 }
15769 15775
15770 error::Error GLES2DecoderImpl::HandleCoverFillPathCHROMIUM( 15776 error::Error GLES2DecoderImpl::HandleCoverFillPathCHROMIUM(
15771 uint32_t immediate_data_size, 15777 uint32_t immediate_data_size,
15772 const void* cmd_data) { 15778 const void* cmd_data) {
15779 static const char kFunctionName[] = "glCoverFillPathCHROMIUM";
15773 const gles2::cmds::CoverFillPathCHROMIUM& c = 15780 const gles2::cmds::CoverFillPathCHROMIUM& c =
15774 *static_cast<const gles2::cmds::CoverFillPathCHROMIUM*>(cmd_data); 15781 *static_cast<const gles2::cmds::CoverFillPathCHROMIUM*>(cmd_data);
15775 if (!features().chromium_path_rendering) 15782 if (!features().chromium_path_rendering)
15776 return error::kUnknownCommand; 15783 return error::kUnknownCommand;
15777 15784
15778 PathCommandValidatorContext v(this, "glCoverFillPathCHROMIUM"); 15785 PathCommandValidatorContext v(this, kFunctionName);
15779 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM; 15786 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM;
15780 if (!v.GetCoverMode(c, &cover_mode)) 15787 if (!v.GetCoverMode(c, &cover_mode))
15781 return v.error(); 15788 return v.error();
15782 15789
15783 GLuint service_id = 0; 15790 GLuint service_id = 0;
15784 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) 15791 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id))
15785 return error::kNoError; 15792 return error::kNoError;
15786 15793 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15794 return error::kNoError;
15787 ApplyDirtyState(); 15795 ApplyDirtyState();
15788 glCoverFillPathNV(service_id, cover_mode); 15796 glCoverFillPathNV(service_id, cover_mode);
15789 return error::kNoError; 15797 return error::kNoError;
15790 } 15798 }
15791 15799
15792 error::Error GLES2DecoderImpl::HandleCoverStrokePathCHROMIUM( 15800 error::Error GLES2DecoderImpl::HandleCoverStrokePathCHROMIUM(
15793 uint32_t immediate_data_size, 15801 uint32_t immediate_data_size,
15794 const void* cmd_data) { 15802 const void* cmd_data) {
15803 static const char kFunctionName[] = "glCoverStrokePathCHROMIUM";
15795 const gles2::cmds::CoverStrokePathCHROMIUM& c = 15804 const gles2::cmds::CoverStrokePathCHROMIUM& c =
15796 *static_cast<const gles2::cmds::CoverStrokePathCHROMIUM*>(cmd_data); 15805 *static_cast<const gles2::cmds::CoverStrokePathCHROMIUM*>(cmd_data);
15797 if (!features().chromium_path_rendering) 15806 if (!features().chromium_path_rendering)
15798 return error::kUnknownCommand; 15807 return error::kUnknownCommand;
15799 15808
15800 PathCommandValidatorContext v(this, "glCoverStrokePathCHROMIUM"); 15809 PathCommandValidatorContext v(this, kFunctionName);
15801 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM; 15810 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM;
15802 if (!v.GetCoverMode(c, &cover_mode)) 15811 if (!v.GetCoverMode(c, &cover_mode))
15803 return v.error(); 15812 return v.error();
15804 15813
15805 GLuint service_id = 0; 15814 GLuint service_id = 0;
15806 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) 15815 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id))
15807 return error::kNoError; 15816 return error::kNoError;
15808 15817
15818 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15819 return error::kNoError;
15809 ApplyDirtyState(); 15820 ApplyDirtyState();
15810 glCoverStrokePathNV(service_id, cover_mode); 15821 glCoverStrokePathNV(service_id, cover_mode);
15811 return error::kNoError; 15822 return error::kNoError;
15812 } 15823 }
15813 15824
15814 error::Error GLES2DecoderImpl::HandleStencilThenCoverFillPathCHROMIUM( 15825 error::Error GLES2DecoderImpl::HandleStencilThenCoverFillPathCHROMIUM(
15815 uint32_t immediate_data_size, 15826 uint32_t immediate_data_size,
15816 const void* cmd_data) { 15827 const void* cmd_data) {
15828 static const char kFunctionName[] = "glStencilThenCoverFillPathCHROMIUM";
15817 const gles2::cmds::StencilThenCoverFillPathCHROMIUM& c = 15829 const gles2::cmds::StencilThenCoverFillPathCHROMIUM& c =
15818 *static_cast<const gles2::cmds::StencilThenCoverFillPathCHROMIUM*>( 15830 *static_cast<const gles2::cmds::StencilThenCoverFillPathCHROMIUM*>(
15819 cmd_data); 15831 cmd_data);
15820 if (!features().chromium_path_rendering) 15832 if (!features().chromium_path_rendering)
15821 return error::kUnknownCommand; 15833 return error::kUnknownCommand;
15822 15834
15823 PathCommandValidatorContext v(this, "glStencilThenCoverFillPathCHROMIUM"); 15835 PathCommandValidatorContext v(this, kFunctionName);
15824 GLenum fill_mode = GL_COUNT_UP_CHROMIUM; 15836 GLenum fill_mode = GL_COUNT_UP_CHROMIUM;
15825 GLuint mask = 0; 15837 GLuint mask = 0;
15826 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM; 15838 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM;
15827 if (!v.GetFillModeAndMask(c, &fill_mode, &mask) || 15839 if (!v.GetFillModeAndMask(c, &fill_mode, &mask) ||
15828 !v.GetCoverMode(c, &cover_mode)) 15840 !v.GetCoverMode(c, &cover_mode))
15829 return v.error(); 15841 return v.error();
15830 15842
15831 GLuint service_id = 0; 15843 GLuint service_id = 0;
15832 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) 15844 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id))
15833 return error::kNoError; 15845 return error::kNoError;
15834 15846
15847 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15848 return error::kNoError;
15835 ApplyDirtyState(); 15849 ApplyDirtyState();
15836 glStencilThenCoverFillPathNV(service_id, fill_mode, mask, cover_mode); 15850 glStencilThenCoverFillPathNV(service_id, fill_mode, mask, cover_mode);
15837 return error::kNoError; 15851 return error::kNoError;
15838 } 15852 }
15839 15853
15840 error::Error GLES2DecoderImpl::HandleStencilThenCoverStrokePathCHROMIUM( 15854 error::Error GLES2DecoderImpl::HandleStencilThenCoverStrokePathCHROMIUM(
15841 uint32_t immediate_data_size, 15855 uint32_t immediate_data_size,
15842 const void* cmd_data) { 15856 const void* cmd_data) {
15857 static const char kFunctionName[] = "glStencilThenCoverStrokePathCHROMIUM";
15843 const gles2::cmds::StencilThenCoverStrokePathCHROMIUM& c = 15858 const gles2::cmds::StencilThenCoverStrokePathCHROMIUM& c =
15844 *static_cast<const gles2::cmds::StencilThenCoverStrokePathCHROMIUM*>( 15859 *static_cast<const gles2::cmds::StencilThenCoverStrokePathCHROMIUM*>(
15845 cmd_data); 15860 cmd_data);
15846 if (!features().chromium_path_rendering) 15861 if (!features().chromium_path_rendering)
15847 return error::kUnknownCommand; 15862 return error::kUnknownCommand;
15848 15863
15849 PathCommandValidatorContext v(this, "glStencilThenCoverStrokePathCHROMIUM"); 15864 PathCommandValidatorContext v(this, kFunctionName);
15850 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM; 15865 GLenum cover_mode = GL_BOUNDING_BOX_CHROMIUM;
15851 if (!v.GetCoverMode(c, &cover_mode)) 15866 if (!v.GetCoverMode(c, &cover_mode))
15852 return v.error(); 15867 return v.error();
15853 15868
15854 GLuint service_id = 0; 15869 GLuint service_id = 0;
15855 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id)) 15870 if (!path_manager()->GetPath(static_cast<GLuint>(c.path), &service_id))
15856 return error::kNoError; 15871 return error::kNoError;
15857 15872
15858 GLint reference = static_cast<GLint>(c.reference); 15873 GLint reference = static_cast<GLint>(c.reference);
15859 GLuint mask = static_cast<GLuint>(c.mask); 15874 GLuint mask = static_cast<GLuint>(c.mask);
15875
15876 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15877 return error::kNoError;
15860 ApplyDirtyState(); 15878 ApplyDirtyState();
15861 glStencilThenCoverStrokePathNV(service_id, reference, mask, cover_mode); 15879 glStencilThenCoverStrokePathNV(service_id, reference, mask, cover_mode);
15862 return error::kNoError; 15880 return error::kNoError;
15863 } 15881 }
15864 15882
15865 error::Error GLES2DecoderImpl::HandleStencilFillPathInstancedCHROMIUM( 15883 error::Error GLES2DecoderImpl::HandleStencilFillPathInstancedCHROMIUM(
15866 uint32_t immediate_data_size, 15884 uint32_t immediate_data_size,
15867 const void* cmd_data) { 15885 const void* cmd_data) {
15886 static const char kFunctionName[] = "glStencilFillPathInstancedCHROMIUM";
15868 const gles2::cmds::StencilFillPathInstancedCHROMIUM& c = 15887 const gles2::cmds::StencilFillPathInstancedCHROMIUM& c =
15869 *static_cast<const gles2::cmds::StencilFillPathInstancedCHROMIUM*>( 15888 *static_cast<const gles2::cmds::StencilFillPathInstancedCHROMIUM*>(
15870 cmd_data); 15889 cmd_data);
15871 if (!features().chromium_path_rendering) 15890 if (!features().chromium_path_rendering)
15872 return error::kUnknownCommand; 15891 return error::kUnknownCommand;
15873 15892
15874 PathCommandValidatorContext v(this, "glStencilFillPathInstancedCHROMIUM"); 15893 PathCommandValidatorContext v(this, kFunctionName);
15875 GLuint num_paths = 0; 15894 GLuint num_paths = 0;
15876 GLenum path_name_type = GL_NONE; 15895 GLenum path_name_type = GL_NONE;
15877 GLenum fill_mode = GL_COUNT_UP_CHROMIUM; 15896 GLenum fill_mode = GL_COUNT_UP_CHROMIUM;
15878 GLuint mask = 0; 15897 GLuint mask = 0;
15879 GLenum transform_type = GL_NONE; 15898 GLenum transform_type = GL_NONE;
15880 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 15899 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
15881 !v.GetFillModeAndMask(c, &fill_mode, &mask) || 15900 !v.GetFillModeAndMask(c, &fill_mode, &mask) ||
15882 !v.GetTransformType(c, &transform_type)) 15901 !v.GetTransformType(c, &transform_type))
15883 return v.error(); 15902 return v.error();
15884 15903
15885 if (num_paths == 0) 15904 if (num_paths == 0)
15886 return error::kNoError; 15905 return error::kNoError;
15887 15906
15888 std::unique_ptr<GLuint[]> paths; 15907 std::unique_ptr<GLuint[]> paths;
15889 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 15908 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
15890 return v.error(); 15909 return v.error();
15891 15910
15892 const GLfloat* transforms = nullptr; 15911 const GLfloat* transforms = nullptr;
15893 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 15912 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
15894 return v.error(); 15913 return v.error();
15895 15914
15915 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15916 return error::kNoError;
15896 ApplyDirtyState(); 15917 ApplyDirtyState();
15897 glStencilFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 15918 glStencilFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
15898 fill_mode, mask, transform_type, transforms); 15919 fill_mode, mask, transform_type, transforms);
15899 return error::kNoError; 15920 return error::kNoError;
15900 } 15921 }
15901 15922
15902 error::Error GLES2DecoderImpl::HandleStencilStrokePathInstancedCHROMIUM( 15923 error::Error GLES2DecoderImpl::HandleStencilStrokePathInstancedCHROMIUM(
15903 uint32_t immediate_data_size, 15924 uint32_t immediate_data_size,
15904 const void* cmd_data) { 15925 const void* cmd_data) {
15926 static const char kFunctionName[] = "glStencilStrokePathInstancedCHROMIUM";
15905 const gles2::cmds::StencilStrokePathInstancedCHROMIUM& c = 15927 const gles2::cmds::StencilStrokePathInstancedCHROMIUM& c =
15906 *static_cast<const gles2::cmds::StencilStrokePathInstancedCHROMIUM*>( 15928 *static_cast<const gles2::cmds::StencilStrokePathInstancedCHROMIUM*>(
15907 cmd_data); 15929 cmd_data);
15908 if (!features().chromium_path_rendering) 15930 if (!features().chromium_path_rendering)
15909 return error::kUnknownCommand; 15931 return error::kUnknownCommand;
15910 15932
15911 PathCommandValidatorContext v(this, "glStencilStrokePathInstancedCHROMIUM"); 15933 PathCommandValidatorContext v(this, kFunctionName);
15912 GLuint num_paths = 0; 15934 GLuint num_paths = 0;
15913 GLenum path_name_type = GL_NONE; 15935 GLenum path_name_type = GL_NONE;
15914 GLenum transform_type = GL_NONE; 15936 GLenum transform_type = GL_NONE;
15915 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 15937 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
15916 !v.GetTransformType(c, &transform_type)) 15938 !v.GetTransformType(c, &transform_type))
15917 return v.error(); 15939 return v.error();
15918 15940
15919 if (num_paths == 0) 15941 if (num_paths == 0)
15920 return error::kNoError; 15942 return error::kNoError;
15921 15943
15922 std::unique_ptr<GLuint[]> paths; 15944 std::unique_ptr<GLuint[]> paths;
15923 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 15945 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
15924 return v.error(); 15946 return v.error();
15925 15947
15926 const GLfloat* transforms = nullptr; 15948 const GLfloat* transforms = nullptr;
15927 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 15949 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
15928 return v.error(); 15950 return v.error();
15929 15951
15930 GLint reference = static_cast<GLint>(c.reference); 15952 GLint reference = static_cast<GLint>(c.reference);
15931 GLuint mask = static_cast<GLuint>(c.mask); 15953 GLuint mask = static_cast<GLuint>(c.mask);
15954 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15955 return error::kNoError;
15932 ApplyDirtyState(); 15956 ApplyDirtyState();
15933 glStencilStrokePathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 15957 glStencilStrokePathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
15934 reference, mask, transform_type, transforms); 15958 reference, mask, transform_type, transforms);
15935 return error::kNoError; 15959 return error::kNoError;
15936 } 15960 }
15937 15961
15938 error::Error GLES2DecoderImpl::HandleCoverFillPathInstancedCHROMIUM( 15962 error::Error GLES2DecoderImpl::HandleCoverFillPathInstancedCHROMIUM(
15939 uint32_t immediate_data_size, 15963 uint32_t immediate_data_size,
15940 const void* cmd_data) { 15964 const void* cmd_data) {
15965 static const char kFunctionName[] = "glCoverFillPathInstancedCHROMIUM";
15941 const gles2::cmds::CoverFillPathInstancedCHROMIUM& c = 15966 const gles2::cmds::CoverFillPathInstancedCHROMIUM& c =
15942 *static_cast<const gles2::cmds::CoverFillPathInstancedCHROMIUM*>( 15967 *static_cast<const gles2::cmds::CoverFillPathInstancedCHROMIUM*>(
15943 cmd_data); 15968 cmd_data);
15944 if (!features().chromium_path_rendering) 15969 if (!features().chromium_path_rendering)
15945 return error::kUnknownCommand; 15970 return error::kUnknownCommand;
15946 15971
15947 PathCommandValidatorContext v(this, "glCoverFillPathInstancedCHROMIUM"); 15972 PathCommandValidatorContext v(this, kFunctionName);
15948 GLuint num_paths = 0; 15973 GLuint num_paths = 0;
15949 GLenum path_name_type = GL_NONE; 15974 GLenum path_name_type = GL_NONE;
15950 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 15975 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
15951 GLenum transform_type = GL_NONE; 15976 GLenum transform_type = GL_NONE;
15952 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 15977 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
15953 !v.GetCoverMode(c, &cover_mode) || 15978 !v.GetCoverMode(c, &cover_mode) ||
15954 !v.GetTransformType(c, &transform_type)) 15979 !v.GetTransformType(c, &transform_type))
15955 return v.error(); 15980 return v.error();
15956 15981
15957 if (num_paths == 0) 15982 if (num_paths == 0)
15958 return error::kNoError; 15983 return error::kNoError;
15959 15984
15960 std::unique_ptr<GLuint[]> paths; 15985 std::unique_ptr<GLuint[]> paths;
15961 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 15986 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
15962 return v.error(); 15987 return v.error();
15963 15988
15964 const GLfloat* transforms = nullptr; 15989 const GLfloat* transforms = nullptr;
15965 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 15990 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
15966 return v.error(); 15991 return v.error();
15967 15992
15993 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
15994 return error::kNoError;
15968 ApplyDirtyState(); 15995 ApplyDirtyState();
15969 glCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 15996 glCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
15970 cover_mode, transform_type, transforms); 15997 cover_mode, transform_type, transforms);
15971 return error::kNoError; 15998 return error::kNoError;
15972 } 15999 }
15973 16000
15974 error::Error GLES2DecoderImpl::HandleCoverStrokePathInstancedCHROMIUM( 16001 error::Error GLES2DecoderImpl::HandleCoverStrokePathInstancedCHROMIUM(
15975 uint32_t immediate_data_size, 16002 uint32_t immediate_data_size,
15976 const void* cmd_data) { 16003 const void* cmd_data) {
16004 static const char kFunctionName[] = "glCoverStrokePathInstancedCHROMIUM";
15977 const gles2::cmds::CoverStrokePathInstancedCHROMIUM& c = 16005 const gles2::cmds::CoverStrokePathInstancedCHROMIUM& c =
15978 *static_cast<const gles2::cmds::CoverStrokePathInstancedCHROMIUM*>( 16006 *static_cast<const gles2::cmds::CoverStrokePathInstancedCHROMIUM*>(
15979 cmd_data); 16007 cmd_data);
15980 if (!features().chromium_path_rendering) 16008 if (!features().chromium_path_rendering)
15981 return error::kUnknownCommand; 16009 return error::kUnknownCommand;
15982 16010
15983 PathCommandValidatorContext v(this, "glCoverStrokePathInstancedCHROMIUM"); 16011 PathCommandValidatorContext v(this, kFunctionName);
15984 GLuint num_paths = 0; 16012 GLuint num_paths = 0;
15985 GLenum path_name_type = GL_NONE; 16013 GLenum path_name_type = GL_NONE;
15986 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 16014 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
15987 GLenum transform_type = GL_NONE; 16015 GLenum transform_type = GL_NONE;
15988 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16016 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
15989 !v.GetCoverMode(c, &cover_mode) || 16017 !v.GetCoverMode(c, &cover_mode) ||
15990 !v.GetTransformType(c, &transform_type)) 16018 !v.GetTransformType(c, &transform_type))
15991 return v.error(); 16019 return v.error();
15992 16020
15993 if (num_paths == 0) 16021 if (num_paths == 0)
15994 return error::kNoError; 16022 return error::kNoError;
15995 16023
15996 std::unique_ptr<GLuint[]> paths; 16024 std::unique_ptr<GLuint[]> paths;
15997 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16025 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
15998 return v.error(); 16026 return v.error();
15999 16027
16000 const GLfloat* transforms = nullptr; 16028 const GLfloat* transforms = nullptr;
16001 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16029 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16002 return v.error(); 16030 return v.error();
16003 16031
16032 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
16033 return error::kNoError;
16004 ApplyDirtyState(); 16034 ApplyDirtyState();
16005 glCoverStrokePathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0, 16035 glCoverStrokePathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 0,
16006 cover_mode, transform_type, transforms); 16036 cover_mode, transform_type, transforms);
16007 return error::kNoError; 16037 return error::kNoError;
16008 } 16038 }
16009 16039
16010 error::Error GLES2DecoderImpl::HandleStencilThenCoverFillPathInstancedCHROMIUM( 16040 error::Error GLES2DecoderImpl::HandleStencilThenCoverFillPathInstancedCHROMIUM(
16011 uint32_t immediate_data_size, 16041 uint32_t immediate_data_size,
16012 const void* cmd_data) { 16042 const void* cmd_data) {
16043 static const char kFunctionName[] =
16044 "glStencilThenCoverFillPathInstancedCHROMIUM";
16013 const gles2::cmds::StencilThenCoverFillPathInstancedCHROMIUM& c = 16045 const gles2::cmds::StencilThenCoverFillPathInstancedCHROMIUM& c =
16014 *static_cast< 16046 *static_cast<
16015 const gles2::cmds::StencilThenCoverFillPathInstancedCHROMIUM*>( 16047 const gles2::cmds::StencilThenCoverFillPathInstancedCHROMIUM*>(
16016 cmd_data); 16048 cmd_data);
16017 if (!features().chromium_path_rendering) 16049 if (!features().chromium_path_rendering)
16018 return error::kUnknownCommand; 16050 return error::kUnknownCommand;
16019 PathCommandValidatorContext v(this, 16051 PathCommandValidatorContext v(this, kFunctionName);
16020 "glStencilThenCoverFillPathInstancedCHROMIUM"); 16052
16021 GLuint num_paths = 0; 16053 GLuint num_paths = 0;
16022 GLenum path_name_type = GL_NONE; 16054 GLenum path_name_type = GL_NONE;
16023 GLenum fill_mode = GL_COUNT_UP_CHROMIUM; 16055 GLenum fill_mode = GL_COUNT_UP_CHROMIUM;
16024 GLuint mask = 0; 16056 GLuint mask = 0;
16025 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 16057 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
16026 GLenum transform_type = GL_NONE; 16058 GLenum transform_type = GL_NONE;
16027 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16059 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16028 !v.GetFillModeAndMask(c, &fill_mode, &mask) || 16060 !v.GetFillModeAndMask(c, &fill_mode, &mask) ||
16029 !v.GetCoverMode(c, &cover_mode) || 16061 !v.GetCoverMode(c, &cover_mode) ||
16030 !v.GetTransformType(c, &transform_type)) 16062 !v.GetTransformType(c, &transform_type))
16031 return v.error(); 16063 return v.error();
16032 16064
16033 if (num_paths == 0) 16065 if (num_paths == 0)
16034 return error::kNoError; 16066 return error::kNoError;
16035 16067
16036 std::unique_ptr<GLuint[]> paths; 16068 std::unique_ptr<GLuint[]> paths;
16037 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16069 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16038 return v.error(); 16070 return v.error();
16039 16071
16040 const GLfloat* transforms = nullptr; 16072 const GLfloat* transforms = nullptr;
16041 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16073 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16042 return v.error(); 16074 return v.error();
16043 16075
16076 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
16077 return error::kNoError;
16044 ApplyDirtyState(); 16078 ApplyDirtyState();
16045 glStencilThenCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(), 16079 glStencilThenCoverFillPathInstancedNV(num_paths, GL_UNSIGNED_INT, paths.get(),
16046 0, fill_mode, mask, cover_mode, 16080 0, fill_mode, mask, cover_mode,
16047 transform_type, transforms); 16081 transform_type, transforms);
16048 return error::kNoError; 16082 return error::kNoError;
16049 } 16083 }
16050 16084
16051 error::Error 16085 error::Error
16052 GLES2DecoderImpl::HandleStencilThenCoverStrokePathInstancedCHROMIUM( 16086 GLES2DecoderImpl::HandleStencilThenCoverStrokePathInstancedCHROMIUM(
16053 uint32_t immediate_data_size, 16087 uint32_t immediate_data_size,
16054 const void* cmd_data) { 16088 const void* cmd_data) {
16089 static const char kFunctionName[] =
16090 "glStencilThenCoverStrokeInstancedCHROMIUM";
16055 const gles2::cmds::StencilThenCoverStrokePathInstancedCHROMIUM& c = 16091 const gles2::cmds::StencilThenCoverStrokePathInstancedCHROMIUM& c =
16056 *static_cast< 16092 *static_cast<
16057 const gles2::cmds::StencilThenCoverStrokePathInstancedCHROMIUM*>( 16093 const gles2::cmds::StencilThenCoverStrokePathInstancedCHROMIUM*>(
16058 cmd_data); 16094 cmd_data);
16059 if (!features().chromium_path_rendering) 16095 if (!features().chromium_path_rendering)
16060 return error::kUnknownCommand; 16096 return error::kUnknownCommand;
16061 PathCommandValidatorContext v(this, 16097 PathCommandValidatorContext v(this, kFunctionName);
16062 "glStencilThenCoverStrokeInstancedCHROMIUM");
16063 GLuint num_paths = 0; 16098 GLuint num_paths = 0;
16064 GLenum path_name_type = GL_NONE; 16099 GLenum path_name_type = GL_NONE;
16065 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM; 16100 GLenum cover_mode = GL_BOUNDING_BOX_OF_BOUNDING_BOXES_CHROMIUM;
16066 GLenum transform_type = GL_NONE; 16101 GLenum transform_type = GL_NONE;
16067 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) || 16102 if (!v.GetPathCountAndType(c, &num_paths, &path_name_type) ||
16068 !v.GetCoverMode(c, &cover_mode) || 16103 !v.GetCoverMode(c, &cover_mode) ||
16069 !v.GetTransformType(c, &transform_type)) 16104 !v.GetTransformType(c, &transform_type))
16070 return v.error(); 16105 return v.error();
16071 16106
16072 if (num_paths == 0) 16107 if (num_paths == 0)
16073 return error::kNoError; 16108 return error::kNoError;
16074 16109
16075 std::unique_ptr<GLuint[]> paths; 16110 std::unique_ptr<GLuint[]> paths;
16076 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths)) 16111 if (!v.GetPathNameData(c, num_paths, path_name_type, &paths))
16077 return v.error(); 16112 return v.error();
16078 16113
16079 const GLfloat* transforms = nullptr; 16114 const GLfloat* transforms = nullptr;
16080 if (!v.GetTransforms(c, num_paths, transform_type, &transforms)) 16115 if (!v.GetTransforms(c, num_paths, transform_type, &transforms))
16081 return v.error(); 16116 return v.error();
16082 16117
16083 GLint reference = static_cast<GLint>(c.reference); 16118 GLint reference = static_cast<GLint>(c.reference);
16084 GLuint mask = static_cast<GLuint>(c.mask); 16119 GLuint mask = static_cast<GLuint>(c.mask);
16120
16121 if (!CheckBoundDrawFramebufferValid(true, kFunctionName))
16122 return error::kNoError;
16085 ApplyDirtyState(); 16123 ApplyDirtyState();
16086 glStencilThenCoverStrokePathInstancedNV( 16124 glStencilThenCoverStrokePathInstancedNV(
16087 num_paths, GL_UNSIGNED_INT, paths.get(), 0, reference, mask, cover_mode, 16125 num_paths, GL_UNSIGNED_INT, paths.get(), 0, reference, mask, cover_mode,
16088 transform_type, transforms); 16126 transform_type, transforms);
16089 return error::kNoError; 16127 return error::kNoError;
16090 } 16128 }
16091 16129
16092 void GLES2DecoderImpl::DoBindFragmentInputLocationCHROMIUM( 16130 void GLES2DecoderImpl::DoBindFragmentInputLocationCHROMIUM(
16093 GLuint program_id, 16131 GLuint program_id,
16094 GLint location, 16132 GLint location,
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
16357 } 16395 }
16358 16396
16359 // Include the auto-generated part of this file. We split this because it means 16397 // Include the auto-generated part of this file. We split this because it means
16360 // we can easily edit the non-auto generated parts right here in this file 16398 // we can easily edit the non-auto generated parts right here in this file
16361 // instead of having to edit some template or the code generator. 16399 // instead of having to edit some template or the code generator.
16362 #include "base/macros.h" 16400 #include "base/macros.h"
16363 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 16401 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
16364 16402
16365 } // namespace gles2 16403 } // namespace gles2
16366 } // namespace gpu 16404 } // namespace gpu
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698