mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-28 22:13:24 +00:00
gl: Properly initialize pipeline properties
This commit is contained in:
parent
4c019c55d2
commit
ce437eb8d2
@ -221,9 +221,18 @@ private:
|
|||||||
return !!test;
|
return !!test;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool test_property(GLenum property, u32 test) const
|
||||||
|
{
|
||||||
|
auto found = properties.find(property);
|
||||||
|
if (found == properties.end())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return (found->second == test);
|
||||||
|
}
|
||||||
|
|
||||||
void depth_func(GLenum func)
|
void depth_func(GLenum func)
|
||||||
{
|
{
|
||||||
if (properties[GL_DEPTH_FUNC] != func)
|
if (!test_property(GL_DEPTH_FUNC, func))
|
||||||
{
|
{
|
||||||
glDepthFunc(func);
|
glDepthFunc(func);
|
||||||
properties[GL_DEPTH_FUNC] = func;
|
properties[GL_DEPTH_FUNC] = func;
|
||||||
@ -232,7 +241,7 @@ private:
|
|||||||
|
|
||||||
void depth_mask(GLboolean mask)
|
void depth_mask(GLboolean mask)
|
||||||
{
|
{
|
||||||
if (properties[GL_DEPTH_WRITEMASK] != mask)
|
if (!test_property(GL_DEPTH_WRITEMASK, mask))
|
||||||
{
|
{
|
||||||
glDepthMask(mask);
|
glDepthMask(mask);
|
||||||
properties[GL_DEPTH_WRITEMASK] = mask;
|
properties[GL_DEPTH_WRITEMASK] = mask;
|
||||||
@ -242,7 +251,7 @@ private:
|
|||||||
void clear_depth(GLfloat depth)
|
void clear_depth(GLfloat depth)
|
||||||
{
|
{
|
||||||
u32 value = (u32&)depth;
|
u32 value = (u32&)depth;
|
||||||
if (properties[GL_DEPTH_CLEAR_VALUE] != value)
|
if (!test_property(GL_DEPTH_CLEAR_VALUE, value))
|
||||||
{
|
{
|
||||||
glClearDepth(value);
|
glClearDepth(value);
|
||||||
properties[GL_DEPTH_CLEAR_VALUE] = value;
|
properties[GL_DEPTH_CLEAR_VALUE] = value;
|
||||||
@ -251,7 +260,7 @@ private:
|
|||||||
|
|
||||||
void stencil_mask(GLuint mask)
|
void stencil_mask(GLuint mask)
|
||||||
{
|
{
|
||||||
if (properties[GL_STENCIL_WRITEMASK] != mask)
|
if (!test_property(GL_STENCIL_WRITEMASK, mask))
|
||||||
{
|
{
|
||||||
glStencilMask(mask);
|
glStencilMask(mask);
|
||||||
properties[GL_STENCIL_WRITEMASK] = mask;
|
properties[GL_STENCIL_WRITEMASK] = mask;
|
||||||
@ -261,7 +270,7 @@ private:
|
|||||||
void clear_stencil(GLint stencil)
|
void clear_stencil(GLint stencil)
|
||||||
{
|
{
|
||||||
u32 value = (u32&)stencil;
|
u32 value = (u32&)stencil;
|
||||||
if (properties[GL_STENCIL_CLEAR_VALUE] != value)
|
if (!test_property(GL_STENCIL_CLEAR_VALUE, value))
|
||||||
{
|
{
|
||||||
glClearStencil(value);
|
glClearStencil(value);
|
||||||
properties[GL_STENCIL_CLEAR_VALUE] = value;
|
properties[GL_STENCIL_CLEAR_VALUE] = value;
|
||||||
@ -270,7 +279,7 @@ private:
|
|||||||
|
|
||||||
void color_mask(u32 mask)
|
void color_mask(u32 mask)
|
||||||
{
|
{
|
||||||
if (properties[GL_COLOR_WRITEMASK] != mask)
|
if (!test_property(GL_COLOR_WRITEMASK, mask))
|
||||||
{
|
{
|
||||||
glColorMask(((mask & 0x20) ? 1 : 0), ((mask & 0x40) ? 1 : 0), ((mask & 0x80) ? 1 : 0), ((mask & 0x10) ? 1 : 0));
|
glColorMask(((mask & 0x20) ? 1 : 0), ((mask & 0x40) ? 1 : 0), ((mask & 0x80) ? 1 : 0), ((mask & 0x10) ? 1 : 0));
|
||||||
properties[GL_COLOR_WRITEMASK] = mask;
|
properties[GL_COLOR_WRITEMASK] = mask;
|
||||||
@ -291,7 +300,7 @@ private:
|
|||||||
void clear_color(u8 r, u8 g, u8 b, u8 a)
|
void clear_color(u8 r, u8 g, u8 b, u8 a)
|
||||||
{
|
{
|
||||||
u32 value = (u32)r | (u32)g << 8 | (u32)b << 16 | (u32)a << 24;
|
u32 value = (u32)r | (u32)g << 8 | (u32)b << 16 | (u32)a << 24;
|
||||||
if (properties[GL_COLOR_CLEAR_VALUE] != value)
|
if (!test_property(GL_COLOR_CLEAR_VALUE, value))
|
||||||
{
|
{
|
||||||
glClearColor(r / 255.f, g / 255.f, b / 255.f, a / 255.f);
|
glClearColor(r / 255.f, g / 255.f, b / 255.f, a / 255.f);
|
||||||
properties[GL_COLOR_CLEAR_VALUE] = value;
|
properties[GL_COLOR_CLEAR_VALUE] = value;
|
||||||
@ -303,7 +312,7 @@ private:
|
|||||||
u32 depth_min = (u32&)min;
|
u32 depth_min = (u32&)min;
|
||||||
u32 depth_max = (u32&)max;
|
u32 depth_max = (u32&)max;
|
||||||
|
|
||||||
if (properties[DEPTH_BOUNDS_MIN] != depth_min || properties[DEPTH_BOUNDS_MAX] != depth_max)
|
if (!test_property(DEPTH_BOUNDS_MIN, depth_min) || !test_property(DEPTH_BOUNDS_MAX, depth_max))
|
||||||
{
|
{
|
||||||
glDepthBoundsEXT(min, max);
|
glDepthBoundsEXT(min, max);
|
||||||
|
|
||||||
@ -317,7 +326,7 @@ private:
|
|||||||
u32 depth_min = (u32&)min;
|
u32 depth_min = (u32&)min;
|
||||||
u32 depth_max = (u32&)max;
|
u32 depth_max = (u32&)max;
|
||||||
|
|
||||||
if (properties[DEPTH_RANGE_MIN] != depth_min || properties[DEPTH_RANGE_MAX] != depth_max)
|
if (!test_property(DEPTH_RANGE_MIN, depth_min) || !test_property(DEPTH_RANGE_MAX, depth_max))
|
||||||
{
|
{
|
||||||
glDepthRange(min, max);
|
glDepthRange(min, max);
|
||||||
|
|
||||||
@ -328,7 +337,7 @@ private:
|
|||||||
|
|
||||||
void logic_op(GLenum op)
|
void logic_op(GLenum op)
|
||||||
{
|
{
|
||||||
if (properties[GL_COLOR_LOGIC_OP] != op)
|
if (!test_property(GL_COLOR_LOGIC_OP, op))
|
||||||
{
|
{
|
||||||
glLogicOp(op);
|
glLogicOp(op);
|
||||||
properties[GL_COLOR_LOGIC_OP] = op;
|
properties[GL_COLOR_LOGIC_OP] = op;
|
||||||
@ -339,7 +348,7 @@ private:
|
|||||||
{
|
{
|
||||||
u32 value = (u32&)width;
|
u32 value = (u32&)width;
|
||||||
|
|
||||||
if (properties[GL_LINE_WIDTH] != value)
|
if (!test_property(GL_LINE_WIDTH, value))
|
||||||
{
|
{
|
||||||
glLineWidth(width);
|
glLineWidth(width);
|
||||||
properties[GL_LINE_WIDTH] = value;
|
properties[GL_LINE_WIDTH] = value;
|
||||||
@ -348,7 +357,7 @@ private:
|
|||||||
|
|
||||||
void front_face(GLenum face)
|
void front_face(GLenum face)
|
||||||
{
|
{
|
||||||
if (properties[GL_FRONT_FACE] != face)
|
if (!test_property(GL_FRONT_FACE, face))
|
||||||
{
|
{
|
||||||
glFrontFace(face);
|
glFrontFace(face);
|
||||||
properties[GL_FRONT_FACE] = face;
|
properties[GL_FRONT_FACE] = face;
|
||||||
@ -357,7 +366,7 @@ private:
|
|||||||
|
|
||||||
void cull_face(GLenum mode)
|
void cull_face(GLenum mode)
|
||||||
{
|
{
|
||||||
if (properties[GL_CULL_FACE_MODE] != mode)
|
if (!test_property(GL_CULL_FACE_MODE, mode))
|
||||||
{
|
{
|
||||||
glCullFace(mode);
|
glCullFace(mode);
|
||||||
properties[GL_CULL_FACE_MODE] = mode;
|
properties[GL_CULL_FACE_MODE] = mode;
|
||||||
@ -369,7 +378,7 @@ private:
|
|||||||
u32 _units = (u32&)units;
|
u32 _units = (u32&)units;
|
||||||
u32 _factor = (u32&)factor;
|
u32 _factor = (u32&)factor;
|
||||||
|
|
||||||
if (properties[GL_POLYGON_OFFSET_UNITS] != _units || properties[GL_POLYGON_OFFSET_FACTOR] != _factor)
|
if (!test_property(GL_POLYGON_OFFSET_UNITS, _units) || !test_property(GL_POLYGON_OFFSET_FACTOR, _factor))
|
||||||
{
|
{
|
||||||
glPolygonOffset(factor, units);
|
glPolygonOffset(factor, units);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user