Commit 5c42266e by Jamie Madill

Make Program::usesPointSize D3D-only.

This test is only used in the D3D code, so we can remove this Impl method. If we need it in the future we can always support it more generally from the translator, or handle it differently on each Renderer. BUG=angleproject:1123 Change-Id: Ic4a22ad6cec93726195e68200fc25cc2956be44c Reviewed-on: https://chromium-review.googlesource.com/293822Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 31c8c56a
...@@ -710,11 +710,6 @@ GLint Program::getUsedSamplerRange(SamplerType type) ...@@ -710,11 +710,6 @@ GLint Program::getUsedSamplerRange(SamplerType type)
return mProgram->getUsedSamplerRange(type); return mProgram->getUsedSamplerRange(type);
} }
bool Program::usesPointSize() const
{
return mProgram->usesPointSize();
}
GLint Program::getSamplerMapping(SamplerType type, unsigned int samplerIndex, const Caps &caps) GLint Program::getSamplerMapping(SamplerType type, unsigned int samplerIndex, const Caps &caps)
{ {
return mProgram->getSamplerMapping(type, samplerIndex, caps); return mProgram->getSamplerMapping(type, samplerIndex, caps);
......
...@@ -226,7 +226,6 @@ class Program : angle::NonCopyable ...@@ -226,7 +226,6 @@ class Program : angle::NonCopyable
GLint getSamplerMapping(SamplerType type, unsigned int samplerIndex, const Caps &caps); GLint getSamplerMapping(SamplerType type, unsigned int samplerIndex, const Caps &caps);
GLenum getSamplerTextureType(SamplerType type, unsigned int samplerIndex); GLenum getSamplerTextureType(SamplerType type, unsigned int samplerIndex);
GLint getUsedSamplerRange(SamplerType type); GLint getUsedSamplerRange(SamplerType type);
bool usesPointSize() const;
GLint getFragDataLocation(const std::string &name) const; GLint getFragDataLocation(const std::string &name) const;
......
...@@ -36,7 +36,6 @@ class ProgramImpl : angle::NonCopyable ...@@ -36,7 +36,6 @@ class ProgramImpl : angle::NonCopyable
ProgramImpl(const gl::Program::Data &data); ProgramImpl(const gl::Program::Data &data);
virtual ~ProgramImpl(); virtual ~ProgramImpl();
virtual bool usesPointSize() const = 0;
virtual int getShaderVersion() const = 0; virtual int getShaderVersion() const = 0;
virtual GLenum getBinaryFormat() = 0; virtual GLenum getBinaryFormat() = 0;
......
...@@ -81,6 +81,8 @@ gl::Error RendererD3D::drawElements(const gl::Data &data, ...@@ -81,6 +81,8 @@ gl::Error RendererD3D::drawElements(const gl::Data &data,
gl::Program *program = data.state->getProgram(); gl::Program *program = data.state->getProgram();
ASSERT(program != NULL); ASSERT(program != NULL);
bool usesPointSize = GetImplAs<ProgramD3D>(program)->usesPointSize();
program->updateSamplerMapping(); program->updateSamplerMapping();
gl::Error error = generateSwizzles(data); gl::Error error = generateSwizzles(data);
...@@ -89,7 +91,7 @@ gl::Error RendererD3D::drawElements(const gl::Data &data, ...@@ -89,7 +91,7 @@ gl::Error RendererD3D::drawElements(const gl::Data &data,
return error; return error;
} }
if (!applyPrimitiveType(mode, count, program->usesPointSize())) if (!applyPrimitiveType(mode, count, usesPointSize))
{ {
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
...@@ -150,7 +152,8 @@ gl::Error RendererD3D::drawElements(const gl::Data &data, ...@@ -150,7 +152,8 @@ gl::Error RendererD3D::drawElements(const gl::Data &data,
if (!skipDraw(data, mode)) if (!skipDraw(data, mode))
{ {
error = drawElements(mode, count, type, indices, vao->getElementArrayBuffer().get(), indexInfo, instances, program->usesPointSize()); error = drawElements(mode, count, type, indices, vao->getElementArrayBuffer().get(),
indexInfo, instances, usesPointSize);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -167,6 +170,8 @@ gl::Error RendererD3D::drawArrays(const gl::Data &data, ...@@ -167,6 +170,8 @@ gl::Error RendererD3D::drawArrays(const gl::Data &data,
gl::Program *program = data.state->getProgram(); gl::Program *program = data.state->getProgram();
ASSERT(program != NULL); ASSERT(program != NULL);
bool usesPointSize = GetImplAs<ProgramD3D>(program)->usesPointSize();
program->updateSamplerMapping(); program->updateSamplerMapping();
gl::Error error = generateSwizzles(data); gl::Error error = generateSwizzles(data);
...@@ -175,7 +180,7 @@ gl::Error RendererD3D::drawArrays(const gl::Data &data, ...@@ -175,7 +180,7 @@ gl::Error RendererD3D::drawArrays(const gl::Data &data,
return error; return error;
} }
if (!applyPrimitiveType(mode, count, program->usesPointSize())) if (!applyPrimitiveType(mode, count, usesPointSize))
{ {
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
...@@ -220,7 +225,7 @@ gl::Error RendererD3D::drawArrays(const gl::Data &data, ...@@ -220,7 +225,7 @@ gl::Error RendererD3D::drawArrays(const gl::Data &data,
if (!skipDraw(data, mode)) if (!skipDraw(data, mode))
{ {
error = drawArrays(data, mode, count, instances, program->usesPointSize()); error = drawArrays(data, mode, count, instances, usesPointSize);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -475,12 +480,16 @@ gl::Error RendererD3D::applyTextures(const gl::Data &data) ...@@ -475,12 +480,16 @@ gl::Error RendererD3D::applyTextures(const gl::Data &data)
bool RendererD3D::skipDraw(const gl::Data &data, GLenum drawMode) bool RendererD3D::skipDraw(const gl::Data &data, GLenum drawMode)
{ {
const gl::State &state = *data.state;
if (drawMode == GL_POINTS) if (drawMode == GL_POINTS)
{ {
bool usesPointSize = GetImplAs<ProgramD3D>(state.getProgram())->usesPointSize();
// ProgramBinary assumes non-point rendering if gl_PointSize isn't written, // ProgramBinary assumes non-point rendering if gl_PointSize isn't written,
// which affects varying interpolation. Since the value of gl_PointSize is // which affects varying interpolation. Since the value of gl_PointSize is
// undefined when not written, just skip drawing to avoid unexpected results. // undefined when not written, just skip drawing to avoid unexpected results.
if (!data.state->getProgram()->usesPointSize() && !data.state->isTransformFeedbackActiveUnpaused()) if (!usesPointSize && !state.isTransformFeedbackActiveUnpaused())
{ {
// This is stictly speaking not an error, but developers should be // This is stictly speaking not an error, but developers should be
// notified of risking undefined behavior. // notified of risking undefined behavior.
...@@ -491,7 +500,8 @@ bool RendererD3D::skipDraw(const gl::Data &data, GLenum drawMode) ...@@ -491,7 +500,8 @@ bool RendererD3D::skipDraw(const gl::Data &data, GLenum drawMode)
} }
else if (gl::IsTriangleMode(drawMode)) else if (gl::IsTriangleMode(drawMode))
{ {
if (data.state->getRasterizerState().cullFace && data.state->getRasterizerState().cullMode == GL_FRONT_AND_BACK) if (state.getRasterizerState().cullFace &&
state.getRasterizerState().cullMode == GL_FRONT_AND_BACK)
{ {
return true; return true;
} }
......
...@@ -34,12 +34,6 @@ ProgramGL::~ProgramGL() ...@@ -34,12 +34,6 @@ ProgramGL::~ProgramGL()
mProgramID = 0; mProgramID = 0;
} }
bool ProgramGL::usesPointSize() const
{
UNIMPLEMENTED();
return bool();
}
int ProgramGL::getShaderVersion() const int ProgramGL::getShaderVersion() const
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
......
...@@ -31,7 +31,6 @@ class ProgramGL : public ProgramImpl ...@@ -31,7 +31,6 @@ class ProgramGL : public ProgramImpl
StateManagerGL *stateManager); StateManagerGL *stateManager);
~ProgramGL() override; ~ProgramGL() override;
bool usesPointSize() const override;
int getShaderVersion() const override; int getShaderVersion() const override;
GLenum getBinaryFormat() override; GLenum getBinaryFormat() override;
......
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