Commit 04796cda by Jamie Madill Committed by Commit Bot

Remove gl::PrimitiveType.

This replaces the usages with gl::PrimitiveMode. Also replaces the ProgramD3D Geometry Shader executable storage with a PackedEnumMap. Bug: angleproject:2574 Change-Id: I476dd2ba92d6267b9ea2bb9a37ee15fb6a91e627 Reviewed-on: https://chromium-review.googlesource.com/1067115 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org>
parent 493f9571
......@@ -14,31 +14,6 @@
namespace gl
{
PrimitiveType GetPrimitiveType(PrimitiveMode drawMode)
{
switch (drawMode)
{
case PrimitiveMode::Points:
return PRIMITIVE_POINTS;
case PrimitiveMode::Lines:
return PRIMITIVE_LINES;
case PrimitiveMode::LineStrip:
return PRIMITIVE_LINE_STRIP;
case PrimitiveMode::LineLoop:
return PRIMITIVE_LINE_LOOP;
case PrimitiveMode::Triangles:
return PRIMITIVE_TRIANGLES;
case gl::PrimitiveMode::TriangleStrip:
return PRIMITIVE_TRIANGLE_STRIP;
case gl::PrimitiveMode::TriangleFan:
return PRIMITIVE_TRIANGLE_FAN;
default:
UNREACHABLE();
return PRIMITIVE_TYPE_MAX;
}
}
RasterizerState::RasterizerState()
{
memset(this, 0, sizeof(RasterizerState));
......
......@@ -28,21 +28,6 @@ namespace gl
class Buffer;
class Texture;
// TODO(jmadill): Remove this.
enum PrimitiveType
{
PRIMITIVE_POINTS,
PRIMITIVE_LINES,
PRIMITIVE_LINE_STRIP,
PRIMITIVE_LINE_LOOP,
PRIMITIVE_TRIANGLES,
PRIMITIVE_TRIANGLE_STRIP,
PRIMITIVE_TRIANGLE_FAN,
PRIMITIVE_TYPE_MAX,
};
PrimitiveType GetPrimitiveType(GLenum drawMode);
struct Rectangle
{
Rectangle() : x(0), y(0), width(0), height(0) {}
......
......@@ -1015,7 +1015,7 @@ std::string DynamicHLSL::generateGeometryShaderPreamble(const VaryingPacking &va
}
std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
gl::PrimitiveType primitiveType,
gl::PrimitiveMode primitiveType,
const gl::ProgramState &programData,
const bool useViewScale,
const bool hasANGLEMultiviewEnabled,
......@@ -1027,7 +1027,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
std::stringstream shaderStream;
const bool pointSprites = (primitiveType == PRIMITIVE_POINTS) && pointSpriteEmulation;
const bool pointSprites = (primitiveType == gl::PrimitiveMode::Points) && pointSpriteEmulation;
const bool usesPointCoord = preambleString.find("gl_PointCoord") != std::string::npos;
const char *inputPT = nullptr;
......@@ -1037,7 +1037,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
switch (primitiveType)
{
case PRIMITIVE_POINTS:
case gl::PrimitiveMode::Points:
inputPT = "point";
inputSize = 1;
......@@ -1054,18 +1054,18 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
break;
case PRIMITIVE_LINES:
case PRIMITIVE_LINE_STRIP:
case PRIMITIVE_LINE_LOOP:
case gl::PrimitiveMode::Lines:
case gl::PrimitiveMode::LineStrip:
case gl::PrimitiveMode::LineLoop:
inputPT = "line";
outputPT = "Line";
inputSize = 2;
maxVertexOutput = 2;
break;
case PRIMITIVE_TRIANGLES:
case PRIMITIVE_TRIANGLE_STRIP:
case PRIMITIVE_TRIANGLE_FAN:
case gl::PrimitiveMode::Triangles:
case gl::PrimitiveMode::TriangleStrip:
case gl::PrimitiveMode::TriangleFan:
inputPT = "triangle";
outputPT = "Triangle";
inputSize = 3;
......@@ -1133,7 +1133,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
<< "[maxvertexcount(" << maxVertexOutput << ")]\n"
<< "void main(" << inputPT << " GS_INPUT input[" << inputSize << "], ";
if (primitiveType == PRIMITIVE_TRIANGLE_STRIP)
if (primitiveType == gl::PrimitiveMode::TriangleStrip)
{
shaderStream << "uint primitiveID : SV_PrimitiveID, ";
}
......@@ -1142,7 +1142,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
<< "{\n"
<< " GS_OUTPUT output = (GS_OUTPUT)0;\n";
if (primitiveType == PRIMITIVE_TRIANGLE_STRIP)
if (primitiveType == gl::PrimitiveMode::TriangleStrip)
{
shaderStream << " uint lastVertexIndex = (primitiveID % 2 == 0 ? 2 : 1);\n";
}
......
......@@ -149,7 +149,7 @@ class DynamicHLSL : angle::NonCopyable
const bool selectViewInVS) const;
std::string generateGeometryShaderHLSL(const gl::Context *context,
gl::PrimitiveType primitiveType,
gl::PrimitiveMode primitiveType,
const gl::ProgramState &programData,
const bool useViewScale,
const bool hasANGLEMultiviewEnabled,
......
......@@ -135,32 +135,32 @@ bool ExpandMatrix(T *target, const GLfloat *value)
return true;
}
gl::PrimitiveType GetGeometryShaderTypeFromDrawMode(gl::PrimitiveMode drawMode)
gl::PrimitiveMode GetGeometryShaderTypeFromDrawMode(gl::PrimitiveMode drawMode)
{
switch (drawMode)
{
// Uses the point sprite geometry shader.
case gl::PrimitiveMode::Points:
return gl::PRIMITIVE_POINTS;
return gl::PrimitiveMode::Points;
// All line drawing uses the same geometry shader.
case gl::PrimitiveMode::Lines:
case gl::PrimitiveMode::LineStrip:
case gl::PrimitiveMode::LineLoop:
return gl::PRIMITIVE_LINES;
return gl::PrimitiveMode::Lines;
// The triangle fan primitive is emulated with strips in D3D11.
case gl::PrimitiveMode::Triangles:
case gl::PrimitiveMode::TriangleFan:
return gl::PRIMITIVE_TRIANGLES;
return gl::PrimitiveMode::Triangles;
// Special case for triangle strips.
case gl::PrimitiveMode::TriangleStrip:
return gl::PRIMITIVE_TRIANGLE_STRIP;
return gl::PrimitiveMode::TriangleStrip;
default:
UNREACHABLE();
return gl::PRIMITIVE_TYPE_MAX;
return gl::PrimitiveMode::InvalidEnum;
}
}
......@@ -639,7 +639,6 @@ ProgramD3D::ProgramD3D(const gl::ProgramState &state, RendererD3D *renderer)
: ProgramImpl(state),
mRenderer(renderer),
mDynamicHLSL(nullptr),
mGeometryExecutables(gl::PRIMITIVE_TYPE_MAX),
mComputeExecutable(nullptr),
mUsesPointSize(false),
mUsesFlatInterpolation(false),
......@@ -1043,8 +1042,7 @@ gl::LinkResult ProgramD3D::load(const gl::Context *context,
stream->skip(pixelShaderSize);
}
for (unsigned int geometryExeIndex = 0; geometryExeIndex < gl::PRIMITIVE_TYPE_MAX;
++geometryExeIndex)
for (auto &geometryExe : mGeometryExecutables)
{
unsigned int geometryShaderSize = stream->readInt<unsigned int>();
if (geometryShaderSize == 0)
......@@ -1065,7 +1063,7 @@ gl::LinkResult ProgramD3D::load(const gl::Context *context,
return false;
}
mGeometryExecutables[geometryExeIndex].reset(geometryExecutable);
geometryExe.reset(geometryExecutable);
stream->skip(geometryShaderSize);
}
......@@ -1371,7 +1369,7 @@ gl::Error ProgramD3D::getGeometryExecutableForPrimitiveType(const gl::Context *c
return gl::NoError();
}
gl::PrimitiveType geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode);
gl::PrimitiveMode geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode);
if (mGeometryExecutables[geometryShaderType])
{
......@@ -2797,7 +2795,7 @@ bool ProgramD3D::hasGeometryExecutableForPrimitiveType(gl::PrimitiveMode drawMod
return true;
}
gl::PrimitiveType geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode);
gl::PrimitiveMode geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode);
return mGeometryExecutables[geometryShaderType].get() != nullptr;
}
......
......@@ -477,7 +477,8 @@ class ProgramD3D : public ProgramImpl
std::vector<std::unique_ptr<VertexExecutable>> mVertexExecutables;
std::vector<std::unique_ptr<PixelExecutable>> mPixelExecutables;
std::vector<std::unique_ptr<ShaderExecutableD3D>> mGeometryExecutables;
angle::PackedEnumMap<gl::PrimitiveMode, std::unique_ptr<ShaderExecutableD3D>>
mGeometryExecutables;
std::unique_ptr<ShaderExecutableD3D> mComputeExecutable;
gl::ShaderMap<std::string> mShaderHLSL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment