Make the Gallium r300 works on big-endian architectures.
Diff provided by Michel Daenzer [0] as a possible solution for a regression introduced in Mesa 9 [1]. This diff allows macppc users to use OpenGL accelerated appplications (i.e. GNOME3). As disucssed during c2k15 we won't try to keep this patch during the next Mesa update. [0] https://bugs.freedesktop.org/show_bug.cgi?id=71789 [1] http://lists.freedesktop.org/archives/mesa-dev/2013-December/050218.html Tested by myself and ajacoutot@, regression test and ok jsg@
This commit is contained in:
parent
3ee4d65134
commit
e5e91e484f
@ -185,7 +185,9 @@ static void r300_set_clear_color(struct r300_context *r300,
|
|||||||
union util_color uc;
|
union util_color uc;
|
||||||
|
|
||||||
memset(&uc, 0, sizeof(uc));
|
memset(&uc, 0, sizeof(uc));
|
||||||
util_pack_color(color->f, fb->cbufs[0]->format, &uc);
|
util_pack_color(color->f,
|
||||||
|
r300_get_hw_format(fb->cbufs[0]->format, PIPE_BIND_RENDER_TARGET),
|
||||||
|
&uc);
|
||||||
|
|
||||||
if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT ||
|
if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT ||
|
||||||
fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16X16_FLOAT) {
|
fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16X16_FLOAT) {
|
||||||
|
@ -45,6 +45,8 @@ struct r300_vertex_shader;
|
|||||||
struct r300_stencilref_context;
|
struct r300_stencilref_context;
|
||||||
|
|
||||||
enum colormask_swizzle {
|
enum colormask_swizzle {
|
||||||
|
COLORMASK_ARGB,
|
||||||
|
COLORMASK_XRGB,
|
||||||
COLORMASK_BGRA,
|
COLORMASK_BGRA,
|
||||||
COLORMASK_RGBA,
|
COLORMASK_RGBA,
|
||||||
COLORMASK_RRRR,
|
COLORMASK_RRRR,
|
||||||
|
20
dist/Mesa/src/gallium/drivers/r300/r300_state.c
vendored
20
dist/Mesa/src/gallium/drivers/r300/r300_state.c
vendored
@ -225,6 +225,12 @@ static unsigned blend_discard_conditionally(unsigned eqRGB, unsigned eqA,
|
|||||||
|
|
||||||
/* The hardware colormask is clunky a must be swizzled depending on the format.
|
/* The hardware colormask is clunky a must be swizzled depending on the format.
|
||||||
* This was figured out by trial-and-error. */
|
* This was figured out by trial-and-error. */
|
||||||
|
static unsigned argb_cmask(unsigned mask)
|
||||||
|
{
|
||||||
|
return ((mask & (PIPE_MASK_R | PIPE_MASK_G | PIPE_MASK_B)) << 1) |
|
||||||
|
((mask & PIPE_MASK_A) >> 3);
|
||||||
|
}
|
||||||
|
|
||||||
static unsigned bgra_cmask(unsigned mask)
|
static unsigned bgra_cmask(unsigned mask)
|
||||||
{
|
{
|
||||||
return ((mask & PIPE_MASK_R) << 2) |
|
return ((mask & PIPE_MASK_R) << 2) |
|
||||||
@ -471,6 +477,8 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
|||||||
/* Build a command buffer. */
|
/* Build a command buffer. */
|
||||||
{
|
{
|
||||||
unsigned (*func[COLORMASK_NUM_SWIZZLES])(unsigned) = {
|
unsigned (*func[COLORMASK_NUM_SWIZZLES])(unsigned) = {
|
||||||
|
argb_cmask,
|
||||||
|
argb_cmask,
|
||||||
bgra_cmask,
|
bgra_cmask,
|
||||||
rgba_cmask,
|
rgba_cmask,
|
||||||
rrrr_cmask,
|
rrrr_cmask,
|
||||||
@ -482,7 +490,8 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < COLORMASK_NUM_SWIZZLES; i++) {
|
for (i = 0; i < COLORMASK_NUM_SWIZZLES; i++) {
|
||||||
boolean has_alpha = i != COLORMASK_RGBX && i != COLORMASK_BGRX;
|
boolean has_alpha = i != COLORMASK_RGBX && i != COLORMASK_BGRX &&
|
||||||
|
i != COLORMASK_XRGB;
|
||||||
|
|
||||||
BEGIN_CB(blend->cb_clamp[i], 8);
|
BEGIN_CB(blend->cb_clamp[i], 8);
|
||||||
OUT_CB_REG(R300_RB3D_ROPCNTL, rop);
|
OUT_CB_REG(R300_RB3D_ROPCNTL, rop);
|
||||||
@ -1667,6 +1676,7 @@ r300_create_sampler_view_custom(struct pipe_context *pipe,
|
|||||||
boolean dxtc_swizzle = r300_screen(pipe->screen)->caps.dxtc_swizzle;
|
boolean dxtc_swizzle = r300_screen(pipe->screen)->caps.dxtc_swizzle;
|
||||||
|
|
||||||
if (view) {
|
if (view) {
|
||||||
|
enum pipe_format format = r300_get_hw_format(templ->format, texture->bind);
|
||||||
unsigned hwformat;
|
unsigned hwformat;
|
||||||
|
|
||||||
view->base = *templ;
|
view->base = *templ;
|
||||||
@ -1682,24 +1692,24 @@ r300_create_sampler_view_custom(struct pipe_context *pipe,
|
|||||||
view->swizzle[2] = templ->swizzle_b;
|
view->swizzle[2] = templ->swizzle_b;
|
||||||
view->swizzle[3] = templ->swizzle_a;
|
view->swizzle[3] = templ->swizzle_a;
|
||||||
|
|
||||||
hwformat = r300_translate_texformat(templ->format,
|
hwformat = r300_translate_texformat(format,
|
||||||
view->swizzle,
|
view->swizzle,
|
||||||
is_r500,
|
is_r500,
|
||||||
dxtc_swizzle);
|
dxtc_swizzle);
|
||||||
|
|
||||||
if (hwformat == ~0) {
|
if (hwformat == ~0) {
|
||||||
fprintf(stderr, "r300: Ooops. Got unsupported format %s in %s.\n",
|
fprintf(stderr, "r300: Ooops. Got unsupported format %s in %s.\n",
|
||||||
util_format_short_name(templ->format), __func__);
|
util_format_short_name(format), __func__);
|
||||||
}
|
}
|
||||||
assert(hwformat != ~0);
|
assert(hwformat != ~0);
|
||||||
|
|
||||||
r300_texture_setup_format_state(r300_screen(pipe->screen), tex,
|
r300_texture_setup_format_state(r300_screen(pipe->screen), tex,
|
||||||
templ->format, 0,
|
format, 0,
|
||||||
width0_override, height0_override,
|
width0_override, height0_override,
|
||||||
&view->format);
|
&view->format);
|
||||||
view->format.format1 |= hwformat;
|
view->format.format1 |= hwformat;
|
||||||
if (is_r500) {
|
if (is_r500) {
|
||||||
view->format.format2 |= r500_tx_format_msb_bit(templ->format);
|
view->format.format2 |= r500_tx_format_msb_bit(format);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -815,9 +815,12 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
|||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
if (state->sampler_views[i] && state->sampler_states[i]) {
|
if (state->sampler_views[i] && state->sampler_states[i]) {
|
||||||
|
enum pipe_format format;
|
||||||
|
|
||||||
state->tx_enable |= 1 << i;
|
state->tx_enable |= 1 << i;
|
||||||
|
|
||||||
view = state->sampler_views[i];
|
view = state->sampler_views[i];
|
||||||
|
format = r300_get_hw_format(view->base.format, view->base.texture->bind);
|
||||||
tex = r300_resource(view->base.texture);
|
tex = r300_resource(view->base.texture);
|
||||||
sampler = state->sampler_states[i];
|
sampler = state->sampler_states[i];
|
||||||
|
|
||||||
@ -828,7 +831,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
|||||||
|
|
||||||
/* Set the border color. */
|
/* Set the border color. */
|
||||||
texstate->border_color =
|
texstate->border_color =
|
||||||
r300_get_border_color(view->base.format,
|
r300_get_border_color(format,
|
||||||
sampler->state.border_color.f,
|
sampler->state.border_color.f,
|
||||||
r300->screen->caps.is_r500);
|
r300->screen->caps.is_r500);
|
||||||
|
|
||||||
@ -852,7 +855,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
|||||||
offset = tex->tex.offset_in_bytes[base_level];
|
offset = tex->tex.offset_in_bytes[base_level];
|
||||||
|
|
||||||
r300_texture_setup_format_state(r300->screen, tex,
|
r300_texture_setup_format_state(r300->screen, tex,
|
||||||
view->base.format,
|
format,
|
||||||
base_level,
|
base_level,
|
||||||
view->width0_override,
|
view->width0_override,
|
||||||
view->height0_override,
|
view->height0_override,
|
||||||
@ -865,11 +868,11 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
|||||||
texstate->format.format1 |= view->texcache_region;
|
texstate->format.format1 |= view->texcache_region;
|
||||||
|
|
||||||
/* Depth textures are kinda special. */
|
/* Depth textures are kinda special. */
|
||||||
if (util_format_is_depth_or_stencil(view->base.format)) {
|
if (util_format_is_depth_or_stencil(format)) {
|
||||||
unsigned char depth_swizzle[4];
|
unsigned char depth_swizzle[4];
|
||||||
|
|
||||||
if (!r300->screen->caps.is_r500 &&
|
if (!r300->screen->caps.is_r500 &&
|
||||||
util_format_get_blocksizebits(view->base.format) == 32) {
|
util_format_get_blocksizebits(format) == 32) {
|
||||||
/* X24x8 is sampled as Y16X16 on r3xx-r4xx.
|
/* X24x8 is sampled as Y16X16 on r3xx-r4xx.
|
||||||
* The depth here is at the Y component. */
|
* The depth here is at the Y component. */
|
||||||
for (j = 0; j < 4; j++)
|
for (j = 0; j < 4; j++)
|
||||||
@ -894,7 +897,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (r300->screen->caps.dxtc_swizzle &&
|
if (r300->screen->caps.dxtc_swizzle &&
|
||||||
util_format_is_compressed(view->base.format)) {
|
util_format_is_compressed(format)) {
|
||||||
texstate->filter1 |= R400_DXTC_SWIZZLE_ENABLE;
|
texstate->filter1 |= R400_DXTC_SWIZZLE_ENABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -940,7 +943,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Float textures only support nearest and mip-nearest filtering. */
|
/* Float textures only support nearest and mip-nearest filtering. */
|
||||||
if (util_format_is_float(view->base.format)) {
|
if (util_format_is_float(format)) {
|
||||||
/* No MAG linear filtering. */
|
/* No MAG linear filtering. */
|
||||||
if ((texstate->filter0 & R300_TX_MAG_FILTER_MASK) ==
|
if ((texstate->filter0 & R300_TX_MAG_FILTER_MASK) ==
|
||||||
R300_TX_MAG_FILTER_LINEAR) {
|
R300_TX_MAG_FILTER_LINEAR) {
|
||||||
|
@ -90,6 +90,25 @@ unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum pipe_format r300_get_hw_format(enum pipe_format api_format,
|
||||||
|
unsigned bind)
|
||||||
|
{
|
||||||
|
if (bind & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_SCANOUT | PIPE_BIND_SHARED) &&
|
||||||
|
!(bind & (PIPE_BIND_TRANSFER_READ | PIPE_BIND_TRANSFER_WRITE))) {
|
||||||
|
switch (api_format) {
|
||||||
|
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||||
|
return PIPE_FORMAT_B8G8R8A8_UNORM;
|
||||||
|
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||||
|
return PIPE_FORMAT_B8G8R8X8_UNORM;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return api_format;
|
||||||
|
}
|
||||||
|
|
||||||
/* Translate a pipe_format into a useful texture format for sampling.
|
/* Translate a pipe_format into a useful texture format for sampling.
|
||||||
*
|
*
|
||||||
* Some special formats are translated directly using R300_EASY_TX_FORMAT,
|
* Some special formats are translated directly using R300_EASY_TX_FORMAT,
|
||||||
@ -444,10 +463,14 @@ static uint32_t r300_translate_colorformat(enum pipe_format format)
|
|||||||
return R300_COLOR_FORMAT_ARGB4444;
|
return R300_COLOR_FORMAT_ARGB4444;
|
||||||
|
|
||||||
/* 32-bit buffers. */
|
/* 32-bit buffers. */
|
||||||
|
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||||
|
/*case PIPE_FORMAT_A8R8G8B8_SNORM:*/
|
||||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
||||||
/*case PIPE_FORMAT_B8G8R8A8_SNORM:*/
|
/*case PIPE_FORMAT_B8G8R8A8_SNORM:*/
|
||||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||||
/*case PIPE_FORMAT_B8G8R8X8_SNORM:*/
|
/*case PIPE_FORMAT_B8G8R8X8_SNORM:*/
|
||||||
|
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||||
|
/*case PIPE_FORMAT_X8R8G8B8_SNORM:*/
|
||||||
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
case PIPE_FORMAT_R8G8B8A8_UNORM:
|
||||||
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
case PIPE_FORMAT_R8G8B8A8_SNORM:
|
||||||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||||
@ -667,6 +690,10 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
|
|||||||
R300_C2_SEL_R | R300_C3_SEL_A;
|
R300_C2_SEL_R | R300_C3_SEL_A;
|
||||||
|
|
||||||
/* ARGB outputs. */
|
/* ARGB outputs. */
|
||||||
|
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||||
|
/*case PIPE_FORMAT_X8R8G8B8_SNORM:*/
|
||||||
|
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||||
|
/*case PIPE_FORMAT_A8R8G8B8_SNORM:*/
|
||||||
case PIPE_FORMAT_A16_UNORM:
|
case PIPE_FORMAT_A16_UNORM:
|
||||||
case PIPE_FORMAT_A16_SNORM:
|
case PIPE_FORMAT_A16_SNORM:
|
||||||
case PIPE_FORMAT_A16_FLOAT:
|
case PIPE_FORMAT_A16_FLOAT:
|
||||||
@ -770,6 +797,14 @@ static uint32_t r300_translate_colormask_swizzle(enum pipe_format format)
|
|||||||
case PIPE_FORMAT_R32G32_FLOAT:
|
case PIPE_FORMAT_R32G32_FLOAT:
|
||||||
return COLORMASK_GRRG;
|
return COLORMASK_GRRG;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||||
|
/*case PIPE_FORMAT_A8R8G8B8_SNORM:*/
|
||||||
|
return COLORMASK_ARGB;
|
||||||
|
|
||||||
|
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||||
|
/*case PIPE_FORMAT_X8R8G8B8_SNORM:*/
|
||||||
|
return COLORMASK_XRGB;
|
||||||
|
|
||||||
case PIPE_FORMAT_B5G5R5X1_UNORM:
|
case PIPE_FORMAT_B5G5R5X1_UNORM:
|
||||||
case PIPE_FORMAT_B4G4R4X4_UNORM:
|
case PIPE_FORMAT_B4G4R4X4_UNORM:
|
||||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||||
@ -936,14 +971,17 @@ static void r300_texture_setup_fb_state(struct r300_surface *surf)
|
|||||||
surf->pitch_zmask = tex->tex.zmask_stride_in_pixels[level];
|
surf->pitch_zmask = tex->tex.zmask_stride_in_pixels[level];
|
||||||
surf->pitch_hiz = tex->tex.hiz_stride_in_pixels[level];
|
surf->pitch_hiz = tex->tex.hiz_stride_in_pixels[level];
|
||||||
} else {
|
} else {
|
||||||
|
enum pipe_format hwformat = r300_get_hw_format(surf->base.format,
|
||||||
|
surf->base.texture->bind);
|
||||||
|
|
||||||
surf->pitch =
|
surf->pitch =
|
||||||
stride |
|
stride |
|
||||||
r300_translate_colorformat(surf->base.format) |
|
r300_translate_colorformat(hwformat) |
|
||||||
R300_COLOR_TILE(tex->tex.macrotile[level]) |
|
R300_COLOR_TILE(tex->tex.macrotile[level]) |
|
||||||
R300_COLOR_MICROTILE(tex->tex.microtile);
|
R300_COLOR_MICROTILE(tex->tex.microtile);
|
||||||
surf->format = r300_translate_out_fmt(surf->base.format);
|
surf->format = r300_translate_out_fmt(hwformat);
|
||||||
surf->colormask_swizzle =
|
surf->colormask_swizzle =
|
||||||
r300_translate_colormask_swizzle(surf->base.format);
|
r300_translate_colormask_swizzle(hwformat);
|
||||||
surf->pitch_cmask = tex->tex.cmask_stride_in_pixels;
|
surf->pitch_cmask = tex->tex.cmask_stride_in_pixels;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,9 @@ unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format,
|
|||||||
const unsigned char *swizzle_view,
|
const unsigned char *swizzle_view,
|
||||||
boolean dxtc_swizzle);
|
boolean dxtc_swizzle);
|
||||||
|
|
||||||
|
enum pipe_format r300_get_hw_format(enum pipe_format api_format,
|
||||||
|
unsigned bind);
|
||||||
|
|
||||||
uint32_t r300_translate_texformat(enum pipe_format format,
|
uint32_t r300_translate_texformat(enum pipe_format format,
|
||||||
const unsigned char *swizzle_view,
|
const unsigned char *swizzle_view,
|
||||||
boolean is_r500,
|
boolean is_r500,
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
* USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
* USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
|
||||||
#include "r300_transfer.h"
|
#include "r300_transfer.h"
|
||||||
|
#include "r300_texture.h"
|
||||||
#include "r300_texture_desc.h"
|
#include "r300_texture_desc.h"
|
||||||
#include "r300_screen_buffer.h"
|
#include "r300_screen_buffer.h"
|
||||||
|
|
||||||
@ -110,8 +111,8 @@ r300_texture_transfer_map(struct pipe_context *ctx,
|
|||||||
struct r300_context *r300 = r300_context(ctx);
|
struct r300_context *r300 = r300_context(ctx);
|
||||||
struct r300_resource *tex = r300_resource(texture);
|
struct r300_resource *tex = r300_resource(texture);
|
||||||
struct r300_transfer *trans;
|
struct r300_transfer *trans;
|
||||||
|
enum pipe_format format = texture->format;
|
||||||
boolean referenced_cs, referenced_hw;
|
boolean referenced_cs, referenced_hw;
|
||||||
enum pipe_format format = tex->b.b.format;
|
|
||||||
char *map;
|
char *map;
|
||||||
|
|
||||||
referenced_cs =
|
referenced_cs =
|
||||||
@ -135,8 +136,9 @@ r300_texture_transfer_map(struct pipe_context *ctx,
|
|||||||
* for this transfer.
|
* for this transfer.
|
||||||
* Also make write transfers pipelined. */
|
* Also make write transfers pipelined. */
|
||||||
if (tex->tex.microtile || tex->tex.macrotile[level] ||
|
if (tex->tex.microtile || tex->tex.macrotile[level] ||
|
||||||
|
r300_get_hw_format(format, texture->bind) != format ||
|
||||||
(referenced_hw && !(usage & PIPE_TRANSFER_READ) &&
|
(referenced_hw && !(usage & PIPE_TRANSFER_READ) &&
|
||||||
r300_is_blit_supported(texture->format))) {
|
r300_is_blit_supported(format))) {
|
||||||
struct pipe_resource base;
|
struct pipe_resource base;
|
||||||
|
|
||||||
if (r300->blitter->running) {
|
if (r300->blitter->running) {
|
||||||
|
@ -231,11 +231,11 @@ dri_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
|
|||||||
if (format == __DRI_TEXTURE_FORMAT_RGB) {
|
if (format == __DRI_TEXTURE_FORMAT_RGB) {
|
||||||
/* only need to cover the formats recognized by dri_fill_st_visual */
|
/* only need to cover the formats recognized by dri_fill_st_visual */
|
||||||
switch (internal_format) {
|
switch (internal_format) {
|
||||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
case PIPE_FORMAT_BGRA8888_UNORM:
|
||||||
internal_format = PIPE_FORMAT_B8G8R8X8_UNORM;
|
internal_format = PIPE_FORMAT_BGRX8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
case PIPE_FORMAT_ARGB8888_UNORM:
|
||||||
internal_format = PIPE_FORMAT_X8R8G8B8_UNORM;
|
internal_format = PIPE_FORMAT_XRGB8888_UNORM;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -162,10 +162,10 @@ dri2_drawable_get_buffers(struct dri_drawable *drawable,
|
|||||||
* may occur as the stvis->color_format.
|
* may occur as the stvis->color_format.
|
||||||
*/
|
*/
|
||||||
switch(format) {
|
switch(format) {
|
||||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
case PIPE_FORMAT_BGRA8888_UNORM:
|
||||||
depth = 32;
|
depth = 32;
|
||||||
break;
|
break;
|
||||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
case PIPE_FORMAT_BGRX8888_UNORM:
|
||||||
depth = 24;
|
depth = 24;
|
||||||
break;
|
break;
|
||||||
case PIPE_FORMAT_B5G6R5_UNORM:
|
case PIPE_FORMAT_B5G6R5_UNORM:
|
||||||
@ -444,10 +444,10 @@ dri2_allocate_buffer(__DRIscreen *sPriv,
|
|||||||
|
|
||||||
switch (format) {
|
switch (format) {
|
||||||
case 32:
|
case 32:
|
||||||
pf = PIPE_FORMAT_B8G8R8A8_UNORM;
|
pf = PIPE_FORMAT_BGRA8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
pf = PIPE_FORMAT_B8G8R8X8_UNORM;
|
pf = PIPE_FORMAT_BGRX8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
pf = PIPE_FORMAT_Z16_UNORM;
|
pf = PIPE_FORMAT_Z16_UNORM;
|
||||||
@ -590,13 +590,13 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
|
|||||||
pf = PIPE_FORMAT_B5G6R5_UNORM;
|
pf = PIPE_FORMAT_B5G6R5_UNORM;
|
||||||
break;
|
break;
|
||||||
case __DRI_IMAGE_FORMAT_XRGB8888:
|
case __DRI_IMAGE_FORMAT_XRGB8888:
|
||||||
pf = PIPE_FORMAT_B8G8R8X8_UNORM;
|
pf = PIPE_FORMAT_BGRX8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case __DRI_IMAGE_FORMAT_ARGB8888:
|
case __DRI_IMAGE_FORMAT_ARGB8888:
|
||||||
pf = PIPE_FORMAT_B8G8R8A8_UNORM;
|
pf = PIPE_FORMAT_BGRA8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case __DRI_IMAGE_FORMAT_ABGR8888:
|
case __DRI_IMAGE_FORMAT_ABGR8888:
|
||||||
pf = PIPE_FORMAT_R8G8B8A8_UNORM;
|
pf = PIPE_FORMAT_RGBA8888_UNORM;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pf = PIPE_FORMAT_NONE;
|
pf = PIPE_FORMAT_NONE;
|
||||||
@ -711,13 +711,13 @@ dri2_create_image(__DRIscreen *_screen,
|
|||||||
pf = PIPE_FORMAT_B5G6R5_UNORM;
|
pf = PIPE_FORMAT_B5G6R5_UNORM;
|
||||||
break;
|
break;
|
||||||
case __DRI_IMAGE_FORMAT_XRGB8888:
|
case __DRI_IMAGE_FORMAT_XRGB8888:
|
||||||
pf = PIPE_FORMAT_B8G8R8X8_UNORM;
|
pf = PIPE_FORMAT_BGRX8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case __DRI_IMAGE_FORMAT_ARGB8888:
|
case __DRI_IMAGE_FORMAT_ARGB8888:
|
||||||
pf = PIPE_FORMAT_B8G8R8A8_UNORM;
|
pf = PIPE_FORMAT_BGRA8888_UNORM;
|
||||||
break;
|
break;
|
||||||
case __DRI_IMAGE_FORMAT_ABGR8888:
|
case __DRI_IMAGE_FORMAT_ABGR8888:
|
||||||
pf = PIPE_FORMAT_R8G8B8A8_UNORM;
|
pf = PIPE_FORMAT_RGBA8888_UNORM;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pf = PIPE_FORMAT_NONE;
|
pf = PIPE_FORMAT_NONE;
|
||||||
|
Loading…
Reference in New Issue
Block a user