fix formatting
diff --git a/src/backend/opengl/PipelineGL.cpp b/src/backend/opengl/PipelineGL.cpp
index a55991f..11b46da 100644
--- a/src/backend/opengl/PipelineGL.cpp
+++ b/src/backend/opengl/PipelineGL.cpp
@@ -1,215 +1,215 @@
-// Copyright 2017 The NXT 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
-//
-// http://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.
-
-#include "PipelineGL.h"
-
-#include "OpenGLBackend.h"
-#include "PipelineLayoutGL.h"
-#include "ShaderModuleGL.h"
-
-#include <iostream>
-#include <set>
-
-namespace backend {
-namespace opengl {
-
- namespace {
-
- GLenum GLShaderType(nxt::ShaderStage stage) {
- switch (stage) {
- case nxt::ShaderStage::Vertex:
- return GL_VERTEX_SHADER;
- case nxt::ShaderStage::Fragment:
- return GL_FRAGMENT_SHADER;
- case nxt::ShaderStage::Compute:
- return GL_COMPUTE_SHADER;
- }
- }
-
- }
-
- Pipeline::Pipeline(Device* device, PipelineBuilder* builder) : PipelineBase(builder), device(device) {
- auto CreateShader = [](GLenum type, const char* source) -> GLuint {
- GLuint shader = glCreateShader(type);
- glShaderSource(shader, 1, &source, nullptr);
- glCompileShader(shader);
-
- GLint compileStatus = GL_FALSE;
- glGetShaderiv(shader, GL_COMPILE_STATUS, &compileStatus);
- if (compileStatus == GL_FALSE) {
- GLint infoLogLength = 0;
- glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);
-
- if (infoLogLength > 1) {
- std::vector<char> buffer(infoLogLength);
- glGetShaderInfoLog(shader, infoLogLength, nullptr, &buffer[0]);
- std::cout << source << std::endl;
- std::cout << "Program compilation failed:\n";
- std::cout << buffer.data() << std::endl;
- }
- }
- return shader;
- };
-
- auto FillPushConstants = [](const ShaderModule* module, GLPushConstantInfo* info, GLuint program) {
- const auto& moduleInfo = module->GetPushConstants();
- for (uint32_t i = 0; i < moduleInfo.names.size(); i++) {
- (*info)[i] = -1;
-
- unsigned int size = moduleInfo.sizes[i];
- if (size == 0) {
- continue;
- }
-
- GLint location = glGetUniformLocation(program, moduleInfo.names[i].c_str());
- if (location == -1) {
- continue;
- }
-
- for (uint32_t offset = 0; offset < size; offset++) {
- (*info)[i + offset] = location + offset;
- }
- i += size - 1;
- }
- };
-
- program = glCreateProgram();
-
- for (auto stage : IterateStages(GetStageMask())) {
- const ShaderModule* module = ToBackend(builder->GetStageInfo(stage).module.Get());
-
- GLuint shader = CreateShader(GLShaderType(stage), module->GetSource());
- glAttachShader(program, shader);
- }
-
- glLinkProgram(program);
-
- GLint linkStatus = GL_FALSE;
- glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
- if (linkStatus == GL_FALSE) {
- GLint infoLogLength = 0;
- glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLength);
-
- if (infoLogLength > 1) {
- std::vector<char> buffer(infoLogLength);
- glGetProgramInfoLog(program, infoLogLength, nullptr, &buffer[0]);
- std::cout << "Program link failed:\n";
- std::cout << buffer.data() << std::endl;
- }
- }
-
- for (auto stage : IterateStages(GetStageMask())) {
- const ShaderModule* module = ToBackend(builder->GetStageInfo(stage).module.Get());
- FillPushConstants(module, &glPushConstants[stage], program);
- }
-
- glUseProgram(program);
-
- // The uniforms are part of the program state so we can pre-bind buffer units, texture units etc.
- const auto& layout = ToBackend(GetLayout());
- const auto& indices = layout->GetBindingIndexInfo();
-
- for (uint32_t group = 0; group < kMaxBindGroups; ++group) {
- const auto& groupInfo = layout->GetBindGroupLayout(group)->GetBindingInfo();
-
- for (uint32_t binding = 0; binding < kMaxBindingsPerGroup; ++binding) {
- if (!groupInfo.mask[binding]) {
- continue;
- }
-
- std::string name = GetBindingName(group, binding);
- switch (groupInfo.types[binding]) {
- case nxt::BindingType::UniformBuffer:
- {
- GLint location = glGetUniformBlockIndex(program, name.c_str());
- glUniformBlockBinding(program, location, indices[group][binding]);
- }
- break;
-
- case nxt::BindingType::StorageBuffer:
- {
- GLuint location = glGetProgramResourceIndex(program, GL_SHADER_STORAGE_BLOCK, name.c_str());
- glShaderStorageBlockBinding(program, location, indices[group][binding]);
- }
- break;
-
- case nxt::BindingType::Sampler:
- case nxt::BindingType::SampledTexture:
- // These binding types are handled in the separate sampler and texture emulation
- break;
-
- }
- }
- }
-
- // Compute links between stages for combined samplers, then bind them to texture units
- {
- std::set<CombinedSampler> combinedSamplersSet;
- for (auto stage : IterateStages(GetStageMask())) {
- const auto& module = ToBackend(builder->GetStageInfo(stage).module);
-
- for (const auto& combined : module->GetCombinedSamplerInfo()) {
- combinedSamplersSet.insert(combined);
- }
- }
-
- unitsForSamplers.resize(layout->GetNumSamplers());
- unitsForTextures.resize(layout->GetNumSampledTextures());
-
- GLuint textureUnit = layout->GetTextureUnitsUsed();
- for (const auto& combined : combinedSamplersSet) {
- std::string name = combined.GetName();
- GLint location = glGetUniformLocation(program, name.c_str());
- glUniform1i(location, textureUnit);
-
- GLuint samplerIndex = indices[combined.samplerLocation.group][combined.samplerLocation.binding];
- unitsForSamplers[samplerIndex].push_back(textureUnit);
-
- GLuint textureIndex = indices[combined.textureLocation.group][combined.textureLocation.binding];
- unitsForTextures[textureIndex].push_back(textureUnit);
-
- textureUnit ++;
- }
- }
- }
-
- const Pipeline::GLPushConstantInfo& Pipeline::GetGLPushConstants(nxt::ShaderStage stage) const {
- return glPushConstants[stage];
- }
-
- const std::vector<GLuint>& Pipeline::GetTextureUnitsForSampler(GLuint index) const {
- ASSERT(index >= 0 && index < unitsForSamplers.size());
- return unitsForSamplers[index];
- }
-
- const std::vector<GLuint>& Pipeline::GetTextureUnitsForTexture(GLuint index) const {
- ASSERT(index >= 0 && index < unitsForSamplers.size());
- return unitsForTextures[index];
- }
-
- GLuint Pipeline::GetProgramHandle() const {
- return program;
- }
-
- void Pipeline::ApplyNow() {
- glUseProgram(program);
-
- auto inputState = ToBackend(GetInputState());
- glBindVertexArray(inputState->GetVAO());
- auto depthStencilState = ToBackend(GetDepthStencilState());
- depthStencilState->ApplyNow();
- }
-
-}
-}
+// Copyright 2017 The NXT 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
+//
+// http://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.
+
+#include "PipelineGL.h"
+
+#include "OpenGLBackend.h"
+#include "PipelineLayoutGL.h"
+#include "ShaderModuleGL.h"
+
+#include <iostream>
+#include <set>
+
+namespace backend {
+namespace opengl {
+
+ namespace {
+
+ GLenum GLShaderType(nxt::ShaderStage stage) {
+ switch (stage) {
+ case nxt::ShaderStage::Vertex:
+ return GL_VERTEX_SHADER;
+ case nxt::ShaderStage::Fragment:
+ return GL_FRAGMENT_SHADER;
+ case nxt::ShaderStage::Compute:
+ return GL_COMPUTE_SHADER;
+ }
+ }
+
+ }
+
+ Pipeline::Pipeline(Device* device, PipelineBuilder* builder) : PipelineBase(builder), device(device) {
+ auto CreateShader = [](GLenum type, const char* source) -> GLuint {
+ GLuint shader = glCreateShader(type);
+ glShaderSource(shader, 1, &source, nullptr);
+ glCompileShader(shader);
+
+ GLint compileStatus = GL_FALSE;
+ glGetShaderiv(shader, GL_COMPILE_STATUS, &compileStatus);
+ if (compileStatus == GL_FALSE) {
+ GLint infoLogLength = 0;
+ glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength);
+
+ if (infoLogLength > 1) {
+ std::vector<char> buffer(infoLogLength);
+ glGetShaderInfoLog(shader, infoLogLength, nullptr, &buffer[0]);
+ std::cout << source << std::endl;
+ std::cout << "Program compilation failed:\n";
+ std::cout << buffer.data() << std::endl;
+ }
+ }
+ return shader;
+ };
+
+ auto FillPushConstants = [](const ShaderModule* module, GLPushConstantInfo* info, GLuint program) {
+ const auto& moduleInfo = module->GetPushConstants();
+ for (uint32_t i = 0; i < moduleInfo.names.size(); i++) {
+ (*info)[i] = -1;
+
+ unsigned int size = moduleInfo.sizes[i];
+ if (size == 0) {
+ continue;
+ }
+
+ GLint location = glGetUniformLocation(program, moduleInfo.names[i].c_str());
+ if (location == -1) {
+ continue;
+ }
+
+ for (uint32_t offset = 0; offset < size; offset++) {
+ (*info)[i + offset] = location + offset;
+ }
+ i += size - 1;
+ }
+ };
+
+ program = glCreateProgram();
+
+ for (auto stage : IterateStages(GetStageMask())) {
+ const ShaderModule* module = ToBackend(builder->GetStageInfo(stage).module.Get());
+
+ GLuint shader = CreateShader(GLShaderType(stage), module->GetSource());
+ glAttachShader(program, shader);
+ }
+
+ glLinkProgram(program);
+
+ GLint linkStatus = GL_FALSE;
+ glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);
+ if (linkStatus == GL_FALSE) {
+ GLint infoLogLength = 0;
+ glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLength);
+
+ if (infoLogLength > 1) {
+ std::vector<char> buffer(infoLogLength);
+ glGetProgramInfoLog(program, infoLogLength, nullptr, &buffer[0]);
+ std::cout << "Program link failed:\n";
+ std::cout << buffer.data() << std::endl;
+ }
+ }
+
+ for (auto stage : IterateStages(GetStageMask())) {
+ const ShaderModule* module = ToBackend(builder->GetStageInfo(stage).module.Get());
+ FillPushConstants(module, &glPushConstants[stage], program);
+ }
+
+ glUseProgram(program);
+
+ // The uniforms are part of the program state so we can pre-bind buffer units, texture units etc.
+ const auto& layout = ToBackend(GetLayout());
+ const auto& indices = layout->GetBindingIndexInfo();
+
+ for (uint32_t group = 0; group < kMaxBindGroups; ++group) {
+ const auto& groupInfo = layout->GetBindGroupLayout(group)->GetBindingInfo();
+
+ for (uint32_t binding = 0; binding < kMaxBindingsPerGroup; ++binding) {
+ if (!groupInfo.mask[binding]) {
+ continue;
+ }
+
+ std::string name = GetBindingName(group, binding);
+ switch (groupInfo.types[binding]) {
+ case nxt::BindingType::UniformBuffer:
+ {
+ GLint location = glGetUniformBlockIndex(program, name.c_str());
+ glUniformBlockBinding(program, location, indices[group][binding]);
+ }
+ break;
+
+ case nxt::BindingType::StorageBuffer:
+ {
+ GLuint location = glGetProgramResourceIndex(program, GL_SHADER_STORAGE_BLOCK, name.c_str());
+ glShaderStorageBlockBinding(program, location, indices[group][binding]);
+ }
+ break;
+
+ case nxt::BindingType::Sampler:
+ case nxt::BindingType::SampledTexture:
+ // These binding types are handled in the separate sampler and texture emulation
+ break;
+
+ }
+ }
+ }
+
+ // Compute links between stages for combined samplers, then bind them to texture units
+ {
+ std::set<CombinedSampler> combinedSamplersSet;
+ for (auto stage : IterateStages(GetStageMask())) {
+ const auto& module = ToBackend(builder->GetStageInfo(stage).module);
+
+ for (const auto& combined : module->GetCombinedSamplerInfo()) {
+ combinedSamplersSet.insert(combined);
+ }
+ }
+
+ unitsForSamplers.resize(layout->GetNumSamplers());
+ unitsForTextures.resize(layout->GetNumSampledTextures());
+
+ GLuint textureUnit = layout->GetTextureUnitsUsed();
+ for (const auto& combined : combinedSamplersSet) {
+ std::string name = combined.GetName();
+ GLint location = glGetUniformLocation(program, name.c_str());
+ glUniform1i(location, textureUnit);
+
+ GLuint samplerIndex = indices[combined.samplerLocation.group][combined.samplerLocation.binding];
+ unitsForSamplers[samplerIndex].push_back(textureUnit);
+
+ GLuint textureIndex = indices[combined.textureLocation.group][combined.textureLocation.binding];
+ unitsForTextures[textureIndex].push_back(textureUnit);
+
+ textureUnit ++;
+ }
+ }
+ }
+
+ const Pipeline::GLPushConstantInfo& Pipeline::GetGLPushConstants(nxt::ShaderStage stage) const {
+ return glPushConstants[stage];
+ }
+
+ const std::vector<GLuint>& Pipeline::GetTextureUnitsForSampler(GLuint index) const {
+ ASSERT(index >= 0 && index < unitsForSamplers.size());
+ return unitsForSamplers[index];
+ }
+
+ const std::vector<GLuint>& Pipeline::GetTextureUnitsForTexture(GLuint index) const {
+ ASSERT(index >= 0 && index < unitsForSamplers.size());
+ return unitsForTextures[index];
+ }
+
+ GLuint Pipeline::GetProgramHandle() const {
+ return program;
+ }
+
+ void Pipeline::ApplyNow() {
+ glUseProgram(program);
+
+ auto inputState = ToBackend(GetInputState());
+ glBindVertexArray(inputState->GetVAO());
+ auto depthStencilState = ToBackend(GetDepthStencilState());
+ depthStencilState->ApplyNow();
+ }
+
+}
+}