OLD | NEW |
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 <limits.h> | 7 #include <limits.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 1868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1879 DoBindFramebuffer( | 1879 DoBindFramebuffer( |
1880 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1880 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
1881 DoBindRenderbuffer( | 1881 DoBindRenderbuffer( |
1882 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1882 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
1883 DoRenderbufferStorage( | 1883 DoRenderbufferStorage( |
1884 GL_RENDERBUFFER, GL_RGBA8I, GL_RGBA8I, 1, 1, GL_NO_ERROR); | 1884 GL_RENDERBUFFER, GL_RGBA8I, GL_RGBA8I, 1, 1, GL_NO_ERROR); |
1885 DoFramebufferRenderbuffer( | 1885 DoFramebufferRenderbuffer( |
1886 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 1886 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
1887 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); | 1887 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
1888 | 1888 |
| 1889 // TODO(zmo): Set up expectations for the path where the attachment isn't |
| 1890 // marked as cleared. |
| 1891 Framebuffer* framebuffer = |
| 1892 group().framebuffer_manager()->GetFramebuffer(client_framebuffer_id_); |
| 1893 framebuffer->MarkAttachmentAsCleared( |
| 1894 group().renderbuffer_manager(), nullptr, GL_COLOR_ATTACHMENT0, true); |
| 1895 |
1889 cmds::ClearBufferivImmediate& cmd = | 1896 cmds::ClearBufferivImmediate& cmd = |
1890 *GetImmediateAs<cmds::ClearBufferivImmediate>(); | 1897 *GetImmediateAs<cmds::ClearBufferivImmediate>(); |
1891 GLint temp[4] = { 0 }; | 1898 GLint temp[4] = { 0 }; |
1892 cmd.Init(GL_COLOR, 0, &temp[0]); | 1899 cmd.Init(GL_COLOR, 0, &temp[0]); |
1893 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) | 1900 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
1894 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 1901 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
1895 .RetiresOnSaturation(); | 1902 .RetiresOnSaturation(); |
1896 SetupExpectationsForApplyingDirtyState( | 1903 SetupExpectationsForApplyingDirtyState( |
1897 false, false, false, 0x1111, false, false, 0, 0, false); | 1904 false, false, false, 0x1111, false, false, 0, 0, false); |
1898 EXPECT_CALL(*gl_, ClearBufferiv( | 1905 EXPECT_CALL(*gl_, ClearBufferiv( |
1899 GL_COLOR, 0, | 1906 GL_COLOR, 0, |
1900 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); | 1907 reinterpret_cast<GLint*>(ImmediateDataAddress(&cmd)))); |
1901 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1908 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
1902 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1909 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
1903 } | 1910 } |
1904 | 1911 |
1905 TEST_P(GLES3DecoderTest, ClearBufferuivImmediateValidArgs) { | 1912 TEST_P(GLES3DecoderTest, ClearBufferuivImmediateValidArgs) { |
1906 DoBindFramebuffer( | 1913 DoBindFramebuffer( |
1907 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1914 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
1908 DoBindRenderbuffer( | 1915 DoBindRenderbuffer( |
1909 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1916 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
1910 DoRenderbufferStorage( | 1917 DoRenderbufferStorage( |
1911 GL_RENDERBUFFER, GL_RGBA8UI, GL_RGBA8UI, 1, 1, GL_NO_ERROR); | 1918 GL_RENDERBUFFER, GL_RGBA8UI, GL_RGBA8UI, 1, 1, GL_NO_ERROR); |
1912 DoFramebufferRenderbuffer( | 1919 DoFramebufferRenderbuffer( |
1913 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, | 1920 GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, |
1914 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); | 1921 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
1915 | 1922 |
| 1923 // TODO(zmo): Set up expectations for the path where the attachment isn't |
| 1924 // marked as cleared. |
| 1925 Framebuffer* framebuffer = |
| 1926 group().framebuffer_manager()->GetFramebuffer(client_framebuffer_id_); |
| 1927 framebuffer->MarkAttachmentAsCleared( |
| 1928 group().renderbuffer_manager(), nullptr, GL_COLOR_ATTACHMENT0, true); |
| 1929 |
1916 cmds::ClearBufferuivImmediate& cmd = | 1930 cmds::ClearBufferuivImmediate& cmd = |
1917 *GetImmediateAs<cmds::ClearBufferuivImmediate>(); | 1931 *GetImmediateAs<cmds::ClearBufferuivImmediate>(); |
1918 GLuint temp[4] = { 0u }; | 1932 GLuint temp[4] = { 0u }; |
1919 cmd.Init(GL_COLOR, 0, &temp[0]); | 1933 cmd.Init(GL_COLOR, 0, &temp[0]); |
1920 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) | 1934 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
1921 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 1935 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
1922 .RetiresOnSaturation(); | 1936 .RetiresOnSaturation(); |
1923 SetupExpectationsForApplyingDirtyState( | 1937 SetupExpectationsForApplyingDirtyState( |
1924 false, false, false, 0x1111, false, false, 0, 0, false); | 1938 false, false, false, 0x1111, false, false, 0, 0, false); |
1925 EXPECT_CALL(*gl_, ClearBufferuiv( | 1939 EXPECT_CALL(*gl_, ClearBufferuiv( |
1926 GL_COLOR, 0, | 1940 GL_COLOR, 0, |
1927 reinterpret_cast<GLuint*>( | 1941 reinterpret_cast<GLuint*>( |
1928 ImmediateDataAddress(&cmd)))); | 1942 ImmediateDataAddress(&cmd)))); |
1929 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); | 1943 EXPECT_EQ(error::kNoError, ExecuteImmediateCmd(cmd, sizeof(temp))); |
1930 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1944 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
1931 } | 1945 } |
1932 | 1946 |
1933 TEST_P(GLES3DecoderTest, ClearBufferfvImmediateValidArgs) { | 1947 TEST_P(GLES3DecoderTest, ClearBufferfvImmediateValidArgs) { |
1934 DoBindFramebuffer( | 1948 DoBindFramebuffer( |
1935 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1949 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
1936 DoBindRenderbuffer( | 1950 DoBindRenderbuffer( |
1937 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1951 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
1938 DoRenderbufferStorage( | 1952 DoRenderbufferStorage( |
1939 GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F, | 1953 GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F, |
1940 1, 1, GL_NO_ERROR); | 1954 1, 1, GL_NO_ERROR); |
1941 DoFramebufferRenderbuffer( | 1955 DoFramebufferRenderbuffer( |
1942 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, | 1956 GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, |
1943 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); | 1957 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
1944 | 1958 |
| 1959 // TODO(zmo): Set up expectations for the path where the attachment isn't |
| 1960 // marked as cleared. |
| 1961 Framebuffer* framebuffer = |
| 1962 group().framebuffer_manager()->GetFramebuffer(client_framebuffer_id_); |
| 1963 framebuffer->MarkAttachmentAsCleared( |
| 1964 group().renderbuffer_manager(), nullptr, GL_DEPTH_ATTACHMENT, true); |
| 1965 |
1945 Enable cmd_enable; | 1966 Enable cmd_enable; |
1946 cmd_enable.Init(GL_DEPTH_TEST); | 1967 cmd_enable.Init(GL_DEPTH_TEST); |
1947 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); | 1968 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); |
1948 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 1969 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
1949 | 1970 |
1950 cmds::ClearBufferfvImmediate& cmd = | 1971 cmds::ClearBufferfvImmediate& cmd = |
1951 *GetImmediateAs<cmds::ClearBufferfvImmediate>(); | 1972 *GetImmediateAs<cmds::ClearBufferfvImmediate>(); |
1952 GLfloat temp[4] = { 1.0f }; | 1973 GLfloat temp[4] = { 1.0f }; |
1953 cmd.Init(GL_DEPTH, 0, &temp[0]); | 1974 cmd.Init(GL_DEPTH, 0, &temp[0]); |
1954 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) | 1975 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
(...skipping 14 matching lines...) Expand all Loading... |
1969 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 1990 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
1970 DoBindRenderbuffer( | 1991 DoBindRenderbuffer( |
1971 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); | 1992 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); |
1972 DoRenderbufferStorage( | 1993 DoRenderbufferStorage( |
1973 GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8, | 1994 GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8, |
1974 1, 1, GL_NO_ERROR); | 1995 1, 1, GL_NO_ERROR); |
1975 DoFramebufferRenderbuffer( | 1996 DoFramebufferRenderbuffer( |
1976 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, | 1997 GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, |
1977 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); | 1998 client_renderbuffer_id_, kServiceRenderbufferId, GL_NO_ERROR); |
1978 | 1999 |
| 2000 // TODO(zmo): Set up expectations for the path where the attachment isn't |
| 2001 // marked as cleared. |
| 2002 Framebuffer* framebuffer = |
| 2003 group().framebuffer_manager()->GetFramebuffer(client_framebuffer_id_); |
| 2004 framebuffer->MarkAttachmentAsCleared(group().renderbuffer_manager(), nullptr, |
| 2005 GL_DEPTH_STENCIL_ATTACHMENT, true); |
| 2006 |
1979 Enable cmd_enable; | 2007 Enable cmd_enable; |
1980 cmd_enable.Init(GL_STENCIL_TEST); | 2008 cmd_enable.Init(GL_STENCIL_TEST); |
1981 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); | 2009 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); |
1982 cmd_enable.Init(GL_DEPTH_TEST); | 2010 cmd_enable.Init(GL_DEPTH_TEST); |
1983 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); | 2011 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd_enable)); |
1984 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2012 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
1985 | 2013 |
1986 cmds::ClearBufferfi cmd; | 2014 cmds::ClearBufferfi cmd; |
1987 cmd.Init(GL_DEPTH_STENCIL, 0, 1.0f, 0); | 2015 cmd.Init(GL_DEPTH_STENCIL, 0, 1.0f, 0); |
1988 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) | 2016 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_DRAW_FRAMEBUFFER)) |
(...skipping 1336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3353 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
3326 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3354 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
3327 } | 3355 } |
3328 | 3356 |
3329 // TODO(gman): PixelStorei | 3357 // TODO(gman): PixelStorei |
3330 | 3358 |
3331 // TODO(gman): SwapBuffers | 3359 // TODO(gman): SwapBuffers |
3332 | 3360 |
3333 } // namespace gles2 | 3361 } // namespace gles2 |
3334 } // namespace gpu | 3362 } // namespace gpu |
OLD | NEW |