mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 20:30:12 +01:00
gallium: fix more potential strict aliasing issues
In particular, gcc man page warns that
union a_union {
int i;
double d;
};
int f() {
double d = 3.0;
return ((union a_union *) &d)->i;
}
"might" not be ok (why not?), even though it doesn't seem to generate
any warnings. Hence don't use this and do the extra step to actually use
assignment to get the values in/out of the union.
This changes parts of 3456f9149b.
This commit is contained in:
parent
72362a5cd4
commit
ee1720b99d
4 changed files with 148 additions and 61 deletions
|
|
@ -151,9 +151,10 @@ static void r300_set_blend_color(struct pipe_context* pipe,
|
|||
const struct pipe_blend_color* color)
|
||||
{
|
||||
struct r300_context* r300 = r300_context(pipe);
|
||||
union util_color uc;
|
||||
|
||||
util_pack_color(color->color, PIPE_FORMAT_A8R8G8B8_UNORM,
|
||||
(union util_color *)&r300->blend_color_state->blend_color);
|
||||
util_pack_color(color->color, PIPE_FORMAT_A8R8G8B8_UNORM, &uc);
|
||||
r300->blend_color_state->blend_color = uc.ui;
|
||||
|
||||
/* XXX if FP16 blending is enabled, we should use the FP16 format */
|
||||
r300->blend_color_state->blend_color_red_alpha =
|
||||
|
|
@ -513,6 +514,7 @@ static void*
|
|||
struct r300_context* r300 = r300_context(pipe);
|
||||
struct r300_sampler_state* sampler = CALLOC_STRUCT(r300_sampler_state);
|
||||
int lod_bias;
|
||||
union util_color uc;
|
||||
|
||||
sampler->filter0 |=
|
||||
(r300_translate_wrap(state->wrap_s) << R300_TX_WRAP_S_SHIFT) |
|
||||
|
|
@ -534,8 +536,8 @@ static void*
|
|||
|
||||
sampler->filter1 |= r300_anisotropy(state->max_anisotropy);
|
||||
|
||||
util_pack_color(state->border_color, PIPE_FORMAT_A8R8G8B8_UNORM,
|
||||
(union util_color *)&sampler->border_color);
|
||||
util_pack_color(state->border_color, PIPE_FORMAT_A8R8G8B8_UNORM, &uc);
|
||||
sampler->border_color = uc.ui;
|
||||
|
||||
/* R500-specific fixups and optimizations */
|
||||
if (r300_screen(r300->context.screen)->caps->is_r500) {
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ svga_create_sampler_state(struct pipe_context *pipe,
|
|||
{
|
||||
struct svga_context *svga = svga_context(pipe);
|
||||
struct svga_sampler_state *cso = CALLOC_STRUCT( svga_sampler_state );
|
||||
union util_color uc;
|
||||
|
||||
cso->mipfilter = translate_mip_filter(sampler->min_mip_filter);
|
||||
cso->magfilter = translate_img_filter( sampler->mag_img_filter );
|
||||
|
|
@ -121,8 +122,8 @@ svga_create_sampler_state(struct pipe_context *pipe,
|
|||
ubyte a = float_to_ubyte(sampler->border_color[3]);
|
||||
|
||||
util_pack_color_ub( r, g, b, a,
|
||||
PIPE_FORMAT_B8G8R8A8_UNORM,
|
||||
(union util_color *)&cso->bordercolor );
|
||||
PIPE_FORMAT_B8G8R8A8_UNORM, &uc);
|
||||
cso->bordercolor = uc.ui;
|
||||
}
|
||||
|
||||
/* No SVGA3D support for:
|
||||
|
|
|
|||
|
|
@ -474,6 +474,7 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
VGfloat rgba[][4])
|
||||
{
|
||||
VGint i;
|
||||
union util_color uc;
|
||||
|
||||
switch (dataFormat) {
|
||||
case VG_sRGBX_8888: {
|
||||
|
|
@ -486,8 +487,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
b = (*src >> 8) & 0xff;
|
||||
a = 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -502,8 +506,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
b = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -519,8 +526,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
b = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -536,8 +546,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
clr[2] = ((*src >> 0) & 31)/31.;
|
||||
clr[3] = 1.f;
|
||||
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -552,8 +565,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
clr[2] = ((*src >> 1) & 31)/31.;
|
||||
clr[3] = ((*src >> 0) & 1)/1.;
|
||||
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -568,8 +584,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
clr[2] = ((*src >> 4) & 15)/15.;
|
||||
clr[3] = ((*src >> 0) & 15)/15.;
|
||||
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -578,8 +597,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
VGubyte *src = (VGubyte *)data;
|
||||
src += offset;
|
||||
for (i = 0; i < n; ++i) {
|
||||
util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -594,8 +616,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
b = (*src >> 8) & 0xff;
|
||||
a = 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -610,8 +635,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
b = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -627,8 +655,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
b = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -638,8 +669,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
VGubyte *src = (VGubyte *)data;
|
||||
src += offset;
|
||||
for (i = 0; i < n; ++i) {
|
||||
util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -648,8 +682,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
VGubyte *src = (VGubyte *)data;
|
||||
src += offset;
|
||||
for (i = 0; i < n; ++i) {
|
||||
util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(0xff, 0xff, 0xff, *src, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
}
|
||||
|
|
@ -667,8 +704,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
clr[2] = clr[0];
|
||||
clr[3] = 1.f;
|
||||
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i+j]);
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i+j][0] = uc.f[0];
|
||||
rgba[i+j][1] = uc.f[1];
|
||||
rgba[i+j][2] = uc.f[2];
|
||||
rgba[i+j][3] = uc.f[3];
|
||||
}
|
||||
++src;
|
||||
}
|
||||
|
|
@ -688,8 +728,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
clr[2] = 0.f;
|
||||
clr[3] = (((*src) & (1<<shift)) >> shift);
|
||||
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i+j]);
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i+j][0] = uc.f[0];
|
||||
rgba[i+j][1] = uc.f[1];
|
||||
rgba[i+j][2] = uc.f[2];
|
||||
rgba[i+j][3] = uc.f[3];
|
||||
}
|
||||
++src;
|
||||
}
|
||||
|
|
@ -715,8 +758,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
clr[2] = 0.f;
|
||||
clr[3] = ((*src) & (bitter)) >> shift;
|
||||
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i +j]);
|
||||
util_pack_color(clr, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i+j][0] = uc.f[0];
|
||||
rgba[i+j][1] = uc.f[1];
|
||||
rgba[i+j][2] = uc.f[2];
|
||||
rgba[i+j][3] = uc.f[3];
|
||||
}
|
||||
++src;
|
||||
}
|
||||
|
|
@ -735,8 +781,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
b = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -752,8 +801,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
b = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -775,8 +827,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
b = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -792,8 +847,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
b = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -811,8 +869,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
r = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -828,8 +889,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
r = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -853,8 +917,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
r = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -870,8 +937,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
r = (*src >> 8) & 0xff;
|
||||
a = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -889,8 +959,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
r = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -906,8 +979,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
r = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -929,8 +1005,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
r = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
@ -946,8 +1025,11 @@ void _vega_unpack_float_span_rgba(struct vg_context *ctx,
|
|||
g = (*src >> 8) & 0xff;
|
||||
r = (*src >> 0) & 0xff;
|
||||
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT,
|
||||
(union util_color *)rgba[i]);
|
||||
util_pack_color_ub(r, g, b, a, PIPE_FORMAT_R32G32B32A32_FLOAT, &uc);
|
||||
rgba[i][0] = uc.f[0];
|
||||
rgba[i][1] = uc.f[1];
|
||||
rgba[i][2] = uc.f[2];
|
||||
rgba[i][3] = uc.f[3];
|
||||
++src;
|
||||
}
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -162,12 +162,14 @@ load_color_map_texture(GLcontext *ctx, struct pipe_texture *pt)
|
|||
*/
|
||||
for (i = 0; i < texSize; i++) {
|
||||
for (j = 0; j < texSize; j++) {
|
||||
union util_color uc;
|
||||
int k = (i * texSize + j);
|
||||
ubyte r = ctx->PixelMaps.RtoR.Map8[j * rSize / texSize];
|
||||
ubyte g = ctx->PixelMaps.GtoG.Map8[i * gSize / texSize];
|
||||
ubyte b = ctx->PixelMaps.BtoB.Map8[j * bSize / texSize];
|
||||
ubyte a = ctx->PixelMaps.AtoA.Map8[i * aSize / texSize];
|
||||
util_pack_color_ub(r, g, b, a, pt->format, (union util_color *)(dest + k));
|
||||
util_pack_color_ub(r, g, b, a, pt->format, &uc);
|
||||
*(dest + k) = uc.ui;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue