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

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

Issue 2264253003: Command buffers: ensure we only read immediate data once (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 1781 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 cmd.Init(kUniform4FakeLocation, 2); 1792 cmd.Init(kUniform4FakeLocation, 2);
1793 decoder_->set_unsafe_es3_apis_enabled(true); 1793 decoder_->set_unsafe_es3_apis_enabled(true);
1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1794 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1795 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1795 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1796 decoder_->set_unsafe_es3_apis_enabled(false); 1796 decoder_->set_unsafe_es3_apis_enabled(false);
1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1797 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1798 } 1798 }
1799 1799
1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) { 1800 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateValidArgs) {
1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 1801 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
1802 EXPECT_CALL(*gl_, 1802 GLint temp[1] = {
1803 Uniform1iv(kUniform1RealLocation,
1804 1,
1805 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd))));
1806 GLint temp[1 * 2] = {
1807 0, 1803 0,
1808 }; 1804 };
1805 EXPECT_CALL(*gl_,
1806 Uniform1iv(kUniform1RealLocation, 1, PointsToArray(temp, 1)));
1809 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 1807 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
1810 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1808 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1811 } 1809 }
1812 1810
1813 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateInvalidValidArgs) { 1811 TEST_P(GLES2DecoderWithShaderTest, Uniform1ivImmediateInvalidValidArgs) {
1814 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0); 1812 EXPECT_CALL(*gl_, Uniform1iv(_, _, _)).Times(0);
1815 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 1813 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
1816 GLint temp[1 * 2] = { 1814 GLint temp[1 * 2] = {
1817 0, 1815 0,
1818 }; 1816 };
(...skipping 24 matching lines...) Expand all
1843 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>(); 1841 Uniform1ivImmediate& cmd = *GetImmediateAs<Uniform1ivImmediate>();
1844 GLint temp[] = {kNumTextureUnits}; 1842 GLint temp[] = {kNumTextureUnits};
1845 cmd.Init(kUniform1FakeLocation, 1, &temp[0]); 1843 cmd.Init(kUniform1FakeLocation, 1, &temp[0]);
1846 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1844 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1847 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 1845 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
1848 } 1846 }
1849 1847
1850 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) { 1848 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateValidArgs) {
1851 Uniform1uivImmediate& cmd = 1849 Uniform1uivImmediate& cmd =
1852 *GetImmediateAs<Uniform1uivImmediate>(); 1850 *GetImmediateAs<Uniform1uivImmediate>();
1853 EXPECT_CALL( 1851 GLuint temp[1] = {
1854 *gl_,
1855 Uniform1uiv(kUniform4RealLocation, 1,
1856 reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
1857 GLuint temp[1 * 2] = {
1858 0, 1852 0,
1859 }; 1853 };
1854 EXPECT_CALL(*gl_,
1855 Uniform1uiv(kUniform4RealLocation, 1, PointsToArray(temp, 1)));
1860 cmd.Init(kUniform4FakeLocation, 1, &temp[0]); 1856 cmd.Init(kUniform4FakeLocation, 1, &temp[0]);
1861 decoder_->set_unsafe_es3_apis_enabled(true); 1857 decoder_->set_unsafe_es3_apis_enabled(true);
1862 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1858 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1863 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1859 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1864 decoder_->set_unsafe_es3_apis_enabled(false); 1860 decoder_->set_unsafe_es3_apis_enabled(false);
1865 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1861 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1866 } 1862 }
1867 1863
1868 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) { 1864 TEST_P(GLES2DecoderWithShaderTest, Uniform1uivImmediateInvalidType) {
1869 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0); 1865 EXPECT_CALL(*gl_, Uniform1uiv(_, _, _)).Times(0);
(...skipping 25 matching lines...) Expand all
1895 decoder_->set_unsafe_es3_apis_enabled(true); 1891 decoder_->set_unsafe_es3_apis_enabled(true);
1896 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1892 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1897 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1893 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1898 decoder_->set_unsafe_es3_apis_enabled(false); 1894 decoder_->set_unsafe_es3_apis_enabled(false);
1899 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1895 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1900 } 1896 }
1901 1897
1902 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) { 1898 TEST_P(GLES2DecoderWithShaderTest, Uniform2uivImmediateValidArgs) {
1903 Uniform2uivImmediate& cmd = 1899 Uniform2uivImmediate& cmd =
1904 *GetImmediateAs<Uniform2uivImmediate>(); 1900 *GetImmediateAs<Uniform2uivImmediate>();
1905 EXPECT_CALL(
1906 *gl_,
1907 Uniform2uiv(kUniform5RealLocation, 1,
1908 reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
1909 GLuint temp[2 * 1] = { 1901 GLuint temp[2 * 1] = {
1910 0, 1902 0,
1911 }; 1903 };
1904 EXPECT_CALL(*gl_,
1905 Uniform2uiv(kUniform5RealLocation, 1, PointsToArray(temp, 2)));
1912 cmd.Init(kUniform5FakeLocation, 1, &temp[0]); 1906 cmd.Init(kUniform5FakeLocation, 1, &temp[0]);
1913 decoder_->set_unsafe_es3_apis_enabled(true); 1907 decoder_->set_unsafe_es3_apis_enabled(true);
1914 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1908 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1915 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1909 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1916 decoder_->set_unsafe_es3_apis_enabled(false); 1910 decoder_->set_unsafe_es3_apis_enabled(false);
1917 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1911 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1918 } 1912 }
1919 1913
1920 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) { 1914 TEST_P(GLES2DecoderWithShaderTest, Uniform3uiValidArgs) {
1921 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _)); 1915 EXPECT_CALL(*gl_, Uniform3uiv(kUniform6RealLocation, 1, _));
1922 Uniform3ui cmd; 1916 Uniform3ui cmd;
1923 cmd.Init(kUniform6FakeLocation, 2, 3, 4); 1917 cmd.Init(kUniform6FakeLocation, 2, 3, 4);
1924 decoder_->set_unsafe_es3_apis_enabled(true); 1918 decoder_->set_unsafe_es3_apis_enabled(true);
1925 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1919 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1926 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1920 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1927 decoder_->set_unsafe_es3_apis_enabled(false); 1921 decoder_->set_unsafe_es3_apis_enabled(false);
1928 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1922 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1929 } 1923 }
1930 1924
1931 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) { 1925 TEST_P(GLES2DecoderWithShaderTest, Uniform3uivImmediateValidArgs) {
1932 Uniform3uivImmediate& cmd = 1926 Uniform3uivImmediate& cmd =
1933 *GetImmediateAs<Uniform3uivImmediate>(); 1927 *GetImmediateAs<Uniform3uivImmediate>();
1934 EXPECT_CALL(
1935 *gl_,
1936 Uniform3uiv(kUniform6RealLocation, 1,
1937 reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
1938 GLuint temp[3 * 1] = { 1928 GLuint temp[3 * 1] = {
1939 0, 1929 0,
1940 }; 1930 };
1931 EXPECT_CALL(*gl_,
1932 Uniform3uiv(kUniform6RealLocation, 1, PointsToArray(temp, 3)));
1941 cmd.Init(kUniform6FakeLocation, 1, &temp[0]); 1933 cmd.Init(kUniform6FakeLocation, 1, &temp[0]);
1942 decoder_->set_unsafe_es3_apis_enabled(true); 1934 decoder_->set_unsafe_es3_apis_enabled(true);
1943 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1935 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1944 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1936 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1945 decoder_->set_unsafe_es3_apis_enabled(false); 1937 decoder_->set_unsafe_es3_apis_enabled(false);
1946 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1938 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1947 } 1939 }
1948 1940
1949 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) { 1941 TEST_P(GLES2DecoderWithShaderTest, Uniform4uiValidArgs) {
1950 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _)); 1942 EXPECT_CALL(*gl_, Uniform4uiv(kUniform7RealLocation, 1, _));
1951 Uniform4ui cmd; 1943 Uniform4ui cmd;
1952 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5); 1944 cmd.Init(kUniform7FakeLocation, 2, 3, 4, 5);
1953 decoder_->set_unsafe_es3_apis_enabled(true); 1945 decoder_->set_unsafe_es3_apis_enabled(true);
1954 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1946 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1955 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1947 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1956 decoder_->set_unsafe_es3_apis_enabled(false); 1948 decoder_->set_unsafe_es3_apis_enabled(false);
1957 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); 1949 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd));
1958 } 1950 }
1959 1951
1960 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) { 1952 TEST_P(GLES2DecoderWithShaderTest, Uniform4uivImmediateValidArgs) {
1961 Uniform4uivImmediate& cmd = 1953 Uniform4uivImmediate& cmd =
1962 *GetImmediateAs<Uniform4uivImmediate>(); 1954 *GetImmediateAs<Uniform4uivImmediate>();
1963 EXPECT_CALL(
1964 *gl_,
1965 Uniform4uiv(kUniform7RealLocation, 1,
1966 reinterpret_cast<GLuint*>(ImmediateDataAddress(&cmd))));
1967 GLuint temp[4 * 1] = { 1955 GLuint temp[4 * 1] = {
1968 0, 1956 0,
1969 }; 1957 };
1958 EXPECT_CALL(*gl_,
1959 Uniform4uiv(kUniform7RealLocation, 1, PointsToArray(temp, 4)));
1970 cmd.Init(kUniform7FakeLocation, 1, &temp[0]); 1960 cmd.Init(kUniform7FakeLocation, 1, &temp[0]);
1971 decoder_->set_unsafe_es3_apis_enabled(true); 1961 decoder_->set_unsafe_es3_apis_enabled(true);
1972 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); 1962 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp)));
1973 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1963 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1974 decoder_->set_unsafe_es3_apis_enabled(false); 1964 decoder_->set_unsafe_es3_apis_enabled(false);
1975 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp))); 1965 EXPECT_EQ(error::kUnknownCommand, ExecuteImmediateCmd(cmd, sizeof(temp)));
1976 } 1966 }
1977 1967
1978 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) { 1968 TEST_P(GLES2DecoderTest, BindAttribLocationBucket) {
1979 const uint32_t kBucketId = 123; 1969 const uint32_t kBucketId = 123;
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
2347 } 2337 }
2348 2338
2349 // TODO(gman): DeleteProgram 2339 // TODO(gman): DeleteProgram
2350 2340
2351 // TODO(gman): UseProgram 2341 // TODO(gman): UseProgram
2352 2342
2353 // TODO(gman): DeleteShader 2343 // TODO(gman): DeleteShader
2354 2344
2355 } // namespace gles2 2345 } // namespace gles2
2356 } // namespace gpu 2346 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698