Hash :
0bfa5504
Author :
Date :
2019-06-03T10:40:10
Vulkan: Emulate Transform Feedback with vertex shader output In ES 3.0 and 3.1, only non-indexed GL_POINTS, GL_LINES and GL_TRIANGLES is supported for transform feedback. Without tessellation and geometry shaders, we can calculate the exact location where each vertex transform output should be written on the CPU, and have each vertex shader invocation write its data separately to the appropriate location in the buffer. This depends on the vertexPipelineStoresAndAtomics Vulkan feature. Bug: angleproject:3205 Change-Id: I68ccbb80aece597cf20c557a0aee842360fea593 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1645678 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
//
// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Query.cpp: Implements the gl::Query class
#include "libANGLE/Query.h"
#include "libANGLE/renderer/QueryImpl.h"
namespace gl
{
Query::Query(rx::QueryImpl *impl, GLuint id) : RefCountObject(id), mQuery(impl), mLabel() {}
Query::~Query()
{
SafeDelete(mQuery);
}
void Query::onDestroy(const Context *context)
{
ASSERT(mQuery);
mQuery->onDestroy(context);
}
void Query::setLabel(const Context *context, const std::string &label)
{
mLabel = label;
}
const std::string &Query::getLabel() const
{
return mLabel;
}
angle::Result Query::begin(const Context *context)
{
return mQuery->begin(context);
}
angle::Result Query::end(const Context *context)
{
return mQuery->end(context);
}
angle::Result Query::queryCounter(const Context *context)
{
return mQuery->queryCounter(context);
}
angle::Result Query::getResult(const Context *context, GLint *params)
{
return mQuery->getResult(context, params);
}
angle::Result Query::getResult(const Context *context, GLuint *params)
{
return mQuery->getResult(context, params);
}
angle::Result Query::getResult(const Context *context, GLint64 *params)
{
return mQuery->getResult(context, params);
}
angle::Result Query::getResult(const Context *context, GLuint64 *params)
{
return mQuery->getResult(context, params);
}
angle::Result Query::isResultAvailable(const Context *context, bool *available)
{
return mQuery->isResultAvailable(context, available);
}
QueryType Query::getType() const
{
return mQuery->getType();
}
rx::QueryImpl *Query::getImplementation() const
{
return mQuery;
}
} // namespace gl