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