• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "CapturedTest_MultiFrame_ES3_Vulkan.h"
2 #include "angle_trace_gl.h"
3 
4 const char *const glShaderSource_string_0[] = {
5 "attribute vec4 a_position;\n"
6 "attribute vec2 a_texCoord;\n"
7 "varying vec2 v_texCoord;\n"
8 "void main()\n"
9 "{\n"
10 "    gl_Position = a_position;\n"
11 "    v_texCoord = a_texCoord;\n"
12 "}",
13 };
14 const char *const glShaderSource_string_1[] = {
15 "precision mediump float;\n"
16 "varying vec2 v_texCoord;\n"
17 "uniform sampler2D s_texture;\n"
18 "void main()\n"
19 "{\n"
20 "    gl_FragColor = texture2D(s_texture, v_texCoord);\n"
21 "}",
22 };
23 
24 const char *const glShaderSource_string_2[] = {
25 "precision highp float;\n"
26 "attribute vec3 attr1;\n"
27 "void main(void) {\n"
28 "   gl_Position = vec4(attr1, 1.0);\n"
29 "}",
30 };
31 const char *const glShaderSource_string_3[] = {
32 "precision highp float;\n"
33 "void main(void) {\n"
34 "   gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n"
35 "}",
36 };
37 
38 // Private Functions
39 
SetupReplayContext1(void)40 void SetupReplayContext1(void)
41 {
42     eglMakeCurrent(gEGLDisplay, gSurfaceMap2[0], gSurfaceMap2[0], gContextMap2[1]);
43     glUseProgram(gShaderProgramMap[0]);
44     UpdateCurrentProgram(0);
45     glBindTransformFeedback(GL_TRANSFORM_FEEDBACK, gTransformFeedbackMap[0]);
46     glViewport(0, 0, 128, 128);
47     glScissor(0, 0, 128, 128);
48 }
49 
ReplayFrame1(void)50 void ReplayFrame1(void)
51 {
52     eglGetError();
53     glClearColor(0.25, 0.5, 0.5, 0.5);
54     glClear(GL_COLOR_BUFFER_BIT);
55     glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)gReadBuffer);
56     glGetError();
57     glClear(GL_COLOR_BUFFER_BIT);
58     glUseProgram(gShaderProgramMap[8]);
59     UpdateCurrentProgram(8);
60     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 20, gClientArrays[0]);
61     glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, gClientArrays[1]);
62     glEnableVertexAttribArray(0);
63     glEnableVertexAttribArray(1);
64     glUniform1i(gUniformLocations[gCurrentProgram][0], 0);
65     UpdateClientArrayPointer(0, (const GLubyte *)&gBinaryData[0], 72);
66     UpdateClientArrayPointer(1, (const GLubyte *)&gBinaryData[80], 68);
67     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const GLubyte *)&gBinaryData[160]);
68     glReadPixels(20, 20, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)gReadBuffer);
69     glGetError();
70     UpdateResourceIDBuffer(0, gVertexArrayMap[0]);
71 glDeleteVertexArrays(1, gResourceIDBuffer);
72     UpdateResourceIDBuffer(0, gVertexArrayMap[1]);
73 glDeleteVertexArrays(1, gResourceIDBuffer);
74 }
75 
ReplayFrame2(void)76 void ReplayFrame2(void)
77 {
78     eglGetError();
79     CreateProgram(11);
80     CreateShader(GL_VERTEX_SHADER, 12);
81     CreateShader(GL_FRAGMENT_SHADER, 13);
82     glShaderSource(gShaderProgramMap[12], 1, glShaderSource_string_0, (const GLint *)&gBinaryData[176]);
83     glCompileShader(gShaderProgramMap[12]);
84     glAttachShader(gShaderProgramMap[11], gShaderProgramMap[12]);
85     glShaderSource(gShaderProgramMap[13], 1, glShaderSource_string_1, (const GLint *)&gBinaryData[192]);
86     glCompileShader(gShaderProgramMap[13]);
87     glAttachShader(gShaderProgramMap[11], gShaderProgramMap[13]);
88     glLinkProgram(gShaderProgramMap[11]);
89     UpdateUniformLocation(11, "s_texture", 0, 1);
90     glGetAttribLocation(gShaderProgramMap[11], "a_position");
91     glGetAttribLocation(gShaderProgramMap[11], "a_texCoord");
92     glGetUniformLocation(gShaderProgramMap[11], "s_texture");
93     glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
94     glGenTextures(1, (GLuint *)gReadBuffer);
95     UpdateTextureID(3, 0);
96     glBindTexture(GL_TEXTURE_2D, gTextureMap[3]);
97     glGetError();
98     glTexImage2D(GL_TEXTURE_2D, 0, 6407, 2, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, (const GLubyte *)&gBinaryData[208]);
99     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 9728);
100     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 9728);
101     glClear(GL_COLOR_BUFFER_BIT);
102     glUseProgram(gShaderProgramMap[11]);
103     UpdateCurrentProgram(11);
104     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 20, gClientArrays[0]);
105     glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, gClientArrays[1]);
106     glEnableVertexAttribArray(0);
107     glEnableVertexAttribArray(1);
108     glUniform1i(gUniformLocations[gCurrentProgram][0], 0);
109     UpdateClientArrayPointer(0, (const GLubyte *)&gBinaryData[224], 72);
110     UpdateClientArrayPointer(1, (const GLubyte *)&gBinaryData[304], 68);
111     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const GLubyte *)&gBinaryData[384]);
112     glReadPixels(108, 108, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)gReadBuffer);
113     glGetError();
114     UpdateResourceIDBuffer(0, gTextureMap[3]);
115 glDeleteTextures(1, gResourceIDBuffer);
116     UpdateResourceIDBuffer(0, gVertexArrayMap[0]);
117 glDeleteVertexArrays(1, gResourceIDBuffer);
118     UpdateResourceIDBuffer(0, gVertexArrayMap[1]);
119 glDeleteVertexArrays(1, gResourceIDBuffer);
120     glDeleteProgram(gShaderProgramMap[11]);
121     DeleteUniformLocations(gShaderProgramMap[11]);
122     glDeleteShader(gShaderProgramMap[12]);
123     glDeleteShader(gShaderProgramMap[13]);
124 }
125 
ReplayFrame3(void)126 void ReplayFrame3(void)
127 {
128     eglGetError();
129     glGenBuffers(1, (GLuint *)gReadBuffer);
130     UpdateBufferID(1, 0);
131     glBindBuffer(GL_ARRAY_BUFFER, gBufferMap[1]);
132     CreateProgram(14);
133     CreateShader(GL_VERTEX_SHADER, 15);
134     glShaderSource(gShaderProgramMap[15], 1, glShaderSource_string_2, (const GLint *)&gBinaryData[400]);
135     glCompileShader(gShaderProgramMap[15]);
136     glGetShaderiv(gShaderProgramMap[15], GL_COMPILE_STATUS, (GLint *)gReadBuffer);
137     CreateShader(GL_FRAGMENT_SHADER, 16);
138     glShaderSource(gShaderProgramMap[16], 1, glShaderSource_string_3, (const GLint *)&gBinaryData[416]);
139     glCompileShader(gShaderProgramMap[16]);
140     glGetShaderiv(gShaderProgramMap[16], GL_COMPILE_STATUS, (GLint *)gReadBuffer);
141     glAttachShader(gShaderProgramMap[14], gShaderProgramMap[15]);
142     glDeleteShader(gShaderProgramMap[15]);
143     glAttachShader(gShaderProgramMap[14], gShaderProgramMap[16]);
144     glDeleteShader(gShaderProgramMap[16]);
145     glLinkProgram(gShaderProgramMap[14]);
146     glGetError();
147     glGetProgramiv(gShaderProgramMap[14], GL_LINK_STATUS, (GLint *)gReadBuffer);
148     glBindAttribLocation(gShaderProgramMap[14], 0, "attr1");
149     glLinkProgram(gShaderProgramMap[14]);
150     glGetError();
151     glGetProgramiv(gShaderProgramMap[14], GL_LINK_STATUS, (GLint *)gReadBuffer);
152     glUseProgram(gShaderProgramMap[14]);
153     UpdateCurrentProgram(14);
154     glEnableVertexAttribArray(1);
155     glVertexAttribPointer(1, 3, GL_UNSIGNED_BYTE, GL_FALSE, 1, 0);
156     glDrawArrays(GL_TRIANGLES, 0, 3);
157     glGetError();
158     glDeleteProgram(gShaderProgramMap[14]);
159     DeleteUniformLocations(gShaderProgramMap[14]);
160     UpdateResourceIDBuffer(0, gBufferMap[1]);
161 glDeleteBuffers(1, gResourceIDBuffer);
162 }
163 
ResetReplayContextShared(void)164 void ResetReplayContextShared(void)
165 {
166     UpdateResourceIDBuffer(0, gTextureMap[3]);
167     glDeleteTextures(1, gResourceIDBuffer);
168 }
169 
ResetReplayContext1(void)170 void ResetReplayContext1(void)
171 {
172 }
173 
ReplayFrame4(void)174 void ReplayFrame4(void)
175 {
176     eglGetError();
177     glCompileShader(gShaderProgramMap[4]);
178     glLinkProgram(gShaderProgramMap[5]);
179     UpdateUniformLocation(5, "s_texture", 0, 1);
180     glGetError();
181     glGetAttribLocation(gShaderProgramMap[5], "a_position");
182     glGetAttribLocation(gShaderProgramMap[5], "a_texCoord");
183     glGetUniformLocation(gShaderProgramMap[5], "s_texture");
184     glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
185     glGenTextures(1, (GLuint *)gReadBuffer);
186     UpdateTextureID(3, 0);
187     glBindTexture(GL_TEXTURE_2D, gTextureMap[3]);
188     glGetError();
189     glTexImage2D(GL_TEXTURE_2D, 0, 6407, 2, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, (const GLubyte *)&gBinaryData[432]);
190     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 9728);
191     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 9728);
192     glClear(GL_COLOR_BUFFER_BIT);
193     glUseProgram(gShaderProgramMap[5]);
194     UpdateCurrentProgram(5);
195     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 20, gClientArrays[0]);
196     glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 20, gClientArrays[1]);
197     glEnableVertexAttribArray(0);
198     glEnableVertexAttribArray(1);
199     glUniform1i(gUniformLocations[gCurrentProgram][0], 0);
200     UpdateClientArrayPointer(0, (const GLubyte *)&gBinaryData[448], 72);
201     UpdateClientArrayPointer(1, (const GLubyte *)&gBinaryData[528], 68);
202     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const GLubyte *)&gBinaryData[608]);
203     glReadPixels(108, 108, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)gReadBuffer);
204     glGetError();
205 }
206 
207 // Public Functions
208 
SetupReplay(void)209 void SetupReplay(void)
210 {
211     InitReplay();
212     SetupReplayContextShared();
213     if (gReplayResourceMode == angle::ReplayResourceMode::All)
214     {
215         SetupReplayContextSharedInactive();
216     }
217     SetCurrentContextID(1);
218     SetupReplayContext1();
219 
220 }
221 
ResetReplay(void)222 void ResetReplay(void)
223 {
224     ResetReplayContextShared();
225     ResetReplayContext1();
226 
227     // Reset main context state
228     glUseProgram(gShaderProgramMap[0]);
229     UpdateCurrentProgram(0);
230     glBindTexture(GL_TEXTURE_2D, gTextureMap[2]);
231 }
232 
233