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 @@ ...@@ -14,31 +14,6 @@
namespace gl 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() RasterizerState::RasterizerState()
{ {
memset(this, 0, sizeof(RasterizerState)); memset(this, 0, sizeof(RasterizerState));
......
...@@ -28,21 +28,6 @@ namespace gl ...@@ -28,21 +28,6 @@ namespace gl
class Buffer; class Buffer;
class Texture; 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 struct Rectangle
{ {
Rectangle() : x(0), y(0), width(0), height(0) {} Rectangle() : x(0), y(0), width(0), height(0) {}
......
...@@ -1015,7 +1015,7 @@ std::string DynamicHLSL::generateGeometryShaderPreamble(const VaryingPacking &va ...@@ -1015,7 +1015,7 @@ std::string DynamicHLSL::generateGeometryShaderPreamble(const VaryingPacking &va
} }
std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context, std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
gl::PrimitiveType primitiveType, gl::PrimitiveMode primitiveType,
const gl::ProgramState &programData, const gl::ProgramState &programData,
const bool useViewScale, const bool useViewScale,
const bool hasANGLEMultiviewEnabled, const bool hasANGLEMultiviewEnabled,
...@@ -1027,7 +1027,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context, ...@@ -1027,7 +1027,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
std::stringstream shaderStream; 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 bool usesPointCoord = preambleString.find("gl_PointCoord") != std::string::npos;
const char *inputPT = nullptr; const char *inputPT = nullptr;
...@@ -1037,7 +1037,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context, ...@@ -1037,7 +1037,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
switch (primitiveType) switch (primitiveType)
{ {
case PRIMITIVE_POINTS: case gl::PrimitiveMode::Points:
inputPT = "point"; inputPT = "point";
inputSize = 1; inputSize = 1;
...@@ -1054,18 +1054,18 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context, ...@@ -1054,18 +1054,18 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
break; break;
case PRIMITIVE_LINES: case gl::PrimitiveMode::Lines:
case PRIMITIVE_LINE_STRIP: case gl::PrimitiveMode::LineStrip:
case PRIMITIVE_LINE_LOOP: case gl::PrimitiveMode::LineLoop:
inputPT = "line"; inputPT = "line";
outputPT = "Line"; outputPT = "Line";
inputSize = 2; inputSize = 2;
maxVertexOutput = 2; maxVertexOutput = 2;
break; break;
case PRIMITIVE_TRIANGLES: case gl::PrimitiveMode::Triangles:
case PRIMITIVE_TRIANGLE_STRIP: case gl::PrimitiveMode::TriangleStrip:
case PRIMITIVE_TRIANGLE_FAN: case gl::PrimitiveMode::TriangleFan:
inputPT = "triangle"; inputPT = "triangle";
outputPT = "Triangle"; outputPT = "Triangle";
inputSize = 3; inputSize = 3;
...@@ -1133,7 +1133,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context, ...@@ -1133,7 +1133,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
<< "[maxvertexcount(" << maxVertexOutput << ")]\n" << "[maxvertexcount(" << maxVertexOutput << ")]\n"
<< "void main(" << inputPT << " GS_INPUT input[" << inputSize << "], "; << "void main(" << inputPT << " GS_INPUT input[" << inputSize << "], ";
if (primitiveType == PRIMITIVE_TRIANGLE_STRIP) if (primitiveType == gl::PrimitiveMode::TriangleStrip)
{ {
shaderStream << "uint primitiveID : SV_PrimitiveID, "; shaderStream << "uint primitiveID : SV_PrimitiveID, ";
} }
...@@ -1142,7 +1142,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context, ...@@ -1142,7 +1142,7 @@ std::string DynamicHLSL::generateGeometryShaderHLSL(const gl::Context *context,
<< "{\n" << "{\n"
<< " GS_OUTPUT output = (GS_OUTPUT)0;\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"; shaderStream << " uint lastVertexIndex = (primitiveID % 2 == 0 ? 2 : 1);\n";
} }
......
...@@ -149,7 +149,7 @@ class DynamicHLSL : angle::NonCopyable ...@@ -149,7 +149,7 @@ class DynamicHLSL : angle::NonCopyable
const bool selectViewInVS) const; const bool selectViewInVS) const;
std::string generateGeometryShaderHLSL(const gl::Context *context, std::string generateGeometryShaderHLSL(const gl::Context *context,
gl::PrimitiveType primitiveType, gl::PrimitiveMode primitiveType,
const gl::ProgramState &programData, const gl::ProgramState &programData,
const bool useViewScale, const bool useViewScale,
const bool hasANGLEMultiviewEnabled, const bool hasANGLEMultiviewEnabled,
......
...@@ -135,32 +135,32 @@ bool ExpandMatrix(T *target, const GLfloat *value) ...@@ -135,32 +135,32 @@ bool ExpandMatrix(T *target, const GLfloat *value)
return true; return true;
} }
gl::PrimitiveType GetGeometryShaderTypeFromDrawMode(gl::PrimitiveMode drawMode) gl::PrimitiveMode GetGeometryShaderTypeFromDrawMode(gl::PrimitiveMode drawMode)
{ {
switch (drawMode) switch (drawMode)
{ {
// Uses the point sprite geometry shader. // Uses the point sprite geometry shader.
case gl::PrimitiveMode::Points: case gl::PrimitiveMode::Points:
return gl::PRIMITIVE_POINTS; return gl::PrimitiveMode::Points;
// All line drawing uses the same geometry shader. // All line drawing uses the same geometry shader.
case gl::PrimitiveMode::Lines: case gl::PrimitiveMode::Lines:
case gl::PrimitiveMode::LineStrip: case gl::PrimitiveMode::LineStrip:
case gl::PrimitiveMode::LineLoop: case gl::PrimitiveMode::LineLoop:
return gl::PRIMITIVE_LINES; return gl::PrimitiveMode::Lines;
// The triangle fan primitive is emulated with strips in D3D11. // The triangle fan primitive is emulated with strips in D3D11.
case gl::PrimitiveMode::Triangles: case gl::PrimitiveMode::Triangles:
case gl::PrimitiveMode::TriangleFan: case gl::PrimitiveMode::TriangleFan:
return gl::PRIMITIVE_TRIANGLES; return gl::PrimitiveMode::Triangles;
// Special case for triangle strips. // Special case for triangle strips.
case gl::PrimitiveMode::TriangleStrip: case gl::PrimitiveMode::TriangleStrip:
return gl::PRIMITIVE_TRIANGLE_STRIP; return gl::PrimitiveMode::TriangleStrip;
default: default:
UNREACHABLE(); UNREACHABLE();
return gl::PRIMITIVE_TYPE_MAX; return gl::PrimitiveMode::InvalidEnum;
} }
} }
...@@ -639,7 +639,6 @@ ProgramD3D::ProgramD3D(const gl::ProgramState &state, RendererD3D *renderer) ...@@ -639,7 +639,6 @@ ProgramD3D::ProgramD3D(const gl::ProgramState &state, RendererD3D *renderer)
: ProgramImpl(state), : ProgramImpl(state),
mRenderer(renderer), mRenderer(renderer),
mDynamicHLSL(nullptr), mDynamicHLSL(nullptr),
mGeometryExecutables(gl::PRIMITIVE_TYPE_MAX),
mComputeExecutable(nullptr), mComputeExecutable(nullptr),
mUsesPointSize(false), mUsesPointSize(false),
mUsesFlatInterpolation(false), mUsesFlatInterpolation(false),
...@@ -1043,8 +1042,7 @@ gl::LinkResult ProgramD3D::load(const gl::Context *context, ...@@ -1043,8 +1042,7 @@ gl::LinkResult ProgramD3D::load(const gl::Context *context,
stream->skip(pixelShaderSize); stream->skip(pixelShaderSize);
} }
for (unsigned int geometryExeIndex = 0; geometryExeIndex < gl::PRIMITIVE_TYPE_MAX; for (auto &geometryExe : mGeometryExecutables)
++geometryExeIndex)
{ {
unsigned int geometryShaderSize = stream->readInt<unsigned int>(); unsigned int geometryShaderSize = stream->readInt<unsigned int>();
if (geometryShaderSize == 0) if (geometryShaderSize == 0)
...@@ -1065,7 +1063,7 @@ gl::LinkResult ProgramD3D::load(const gl::Context *context, ...@@ -1065,7 +1063,7 @@ gl::LinkResult ProgramD3D::load(const gl::Context *context,
return false; return false;
} }
mGeometryExecutables[geometryExeIndex].reset(geometryExecutable); geometryExe.reset(geometryExecutable);
stream->skip(geometryShaderSize); stream->skip(geometryShaderSize);
} }
...@@ -1371,7 +1369,7 @@ gl::Error ProgramD3D::getGeometryExecutableForPrimitiveType(const gl::Context *c ...@@ -1371,7 +1369,7 @@ gl::Error ProgramD3D::getGeometryExecutableForPrimitiveType(const gl::Context *c
return gl::NoError(); return gl::NoError();
} }
gl::PrimitiveType geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode); gl::PrimitiveMode geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode);
if (mGeometryExecutables[geometryShaderType]) if (mGeometryExecutables[geometryShaderType])
{ {
...@@ -2797,7 +2795,7 @@ bool ProgramD3D::hasGeometryExecutableForPrimitiveType(gl::PrimitiveMode drawMod ...@@ -2797,7 +2795,7 @@ bool ProgramD3D::hasGeometryExecutableForPrimitiveType(gl::PrimitiveMode drawMod
return true; return true;
} }
gl::PrimitiveType geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode); gl::PrimitiveMode geometryShaderType = GetGeometryShaderTypeFromDrawMode(drawMode);
return mGeometryExecutables[geometryShaderType].get() != nullptr; return mGeometryExecutables[geometryShaderType].get() != nullptr;
} }
......
...@@ -477,7 +477,8 @@ class ProgramD3D : public ProgramImpl ...@@ -477,7 +477,8 @@ class ProgramD3D : public ProgramImpl
std::vector<std::unique_ptr<VertexExecutable>> mVertexExecutables; std::vector<std::unique_ptr<VertexExecutable>> mVertexExecutables;
std::vector<std::unique_ptr<PixelExecutable>> mPixelExecutables; 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; std::unique_ptr<ShaderExecutableD3D> mComputeExecutable;
gl::ShaderMap<std::string> mShaderHLSL; 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