#!amber
# Copyright 2019 The Amber Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

SHADER vertex vtex_shader GLSL
#version 430

layout(location = 0) in vec4 position;
layout(location = 1) in vec4 vert_color;
layout(location = 0) out vec4 frag_color;

void main() {
  gl_Position = position;
  frag_color = vert_color;
}
END
SHADER fragment frag_shader GLSL
#version 430

layout(location = 0) in vec4 frag_color;
layout(location = 0) out vec4 final_color;

void main() {
  final_color = frag_color;
}
END

BUFFER position_buf DATA_TYPE R8G8_SNORM DATA
# Full frame
-128 -128
 127  127
-128  127
-128 -128
 127  127
 127 -128

# Half frame
   0 -128
 127  127
   0  127
   0 -128
 127  127
 127 -128

# Quarter frame
-128    0
   0  127
-128  127
-128    0
   0  127
   0    0

# Quarter frame
   0    0
 127  127
   0  127
   0    0
 127  127
 127    0
END

BUFFER vert_color DATA_TYPE R8G8B8A8_UNORM DATA
255   0   0 0
255   0   0 0
255   0   0 0
255   0   0 0
255   0   0 0
255   0   0 0

  0 255   0 0
  0 255   0 0
  0 255   0 0
  0 255   0 0
  0 255   0 0
  0 255   0 0

  0   0 255 0
  0   0 255 0
  0   0 255 0
  0   0 255 0
  0   0 255 0
  0   0 255 0

127 127 127 0
127 127 127 0
127 127 127 0
127 127 127 0
127 127 127 0
127 127 127 0
END

BUFFER framebuffer FORMAT B8G8R8A8_UNORM

PIPELINE graphics pipeline
  ATTACH vtex_shader
  ATTACH frag_shader

  VERTEX_DATA position_buf LOCATION 0
  VERTEX_DATA vert_color LOCATION 1

  BIND BUFFER framebuffer AS color LOCATION 0
END

CLEAR pipeline

RUN pipeline DRAW_ARRAY AS TRIANGLE_LIST START_IDX 0 COUNT 6
EXPECT framebuffer IDX 0 0 SIZE 250 250 EQ_RGBA 255 0 0 0

RUN pipeline DRAW_ARRAY AS TRIANGLE_LIST START_IDX 6 COUNT 6
EXPECT framebuffer IDX   0 0 SIZE 125 250 EQ_RGBA 255   0 0 0
EXPECT framebuffer IDX 125 0 SIZE 125 250 EQ_RGBA 0   255 0 0

RUN pipeline DRAW_ARRAY AS TRIANGLE_LIST START_IDX 12 COUNT 6
EXPECT framebuffer IDX   0   0 SIZE 125 125 EQ_RGBA 255   0   0 0
EXPECT framebuffer IDX 125   0 SIZE 125 250 EQ_RGBA 0   255   0 0
EXPECT framebuffer IDX   0 125 SIZE 125 125 EQ_RGBA 0     0 255 0

RUN pipeline DRAW_ARRAY AS TRIANGLE_LIST START_IDX 18 COUNT 6
EXPECT framebuffer IDX   0   0 SIZE 125 125 EQ_RGBA 255   0   0 0
EXPECT framebuffer IDX 125   0 SIZE 125 125 EQ_RGBA 0   255   0 0
EXPECT framebuffer IDX   0 125 SIZE 125 125 EQ_RGBA 0     0 255 0
EXPECT framebuffer IDX 125 125 SIZE 125 125 EQ_RGBA 127 127 127 0
