r600c: add evergreen big endian support
Based on Cedric's r6xx/r7xx patch. Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
This commit is contained in:
@@ -98,10 +98,11 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
uint32_t cb_color0_base, cb_color0_info = 0;
|
||||
uint32_t cb_color0_pitch = 0, cb_color0_slice = 0, cb_color0_attrib = 0;
|
||||
int id = 0;
|
||||
uint32_t comp_swap, format, source_format, number_type;
|
||||
uint32_t endian, comp_swap, format, source_format, number_type;
|
||||
BATCH_LOCALS(&context->radeon);
|
||||
|
||||
cb_color0_base = dst_offset / 256;
|
||||
endian = ENDIAN_NONE;
|
||||
|
||||
/* pitch */
|
||||
SETfield(cb_color0_pitch, (nPitchInPixel / 8) - 1,
|
||||
@@ -118,10 +119,6 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
SETbit(cb_color0_attrib,
|
||||
EG_CB_COLOR0_ATTRIB__NON_DISP_TILING_ORDER_bit);
|
||||
|
||||
SETfield(cb_color0_info,
|
||||
ENDIAN_NONE,
|
||||
EG_CB_COLOR0_INFO__ENDIAN_shift,
|
||||
EG_CB_COLOR0_INFO__ENDIAN_mask);
|
||||
SETfield(cb_color0_info,
|
||||
ARRAY_LINEAR_GENERAL,
|
||||
EG_CB_COLOR0_INFO__ARRAY_MODE_shift,
|
||||
@@ -131,24 +128,36 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
|
||||
switch(mesa_format) {
|
||||
case MESA_FORMAT_RGBA8888:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_STD_REV;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_SIGNED_RGBA8888:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_STD_REV;
|
||||
number_type = NUMBER_SNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_RGBA8888_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_SIGNED_RGBA8888_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_SNORM;
|
||||
@@ -156,6 +165,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
break;
|
||||
case MESA_FORMAT_ARGB8888:
|
||||
case MESA_FORMAT_XRGB8888:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_ALT;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -163,54 +175,81 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
break;
|
||||
case MESA_FORMAT_ARGB8888_REV:
|
||||
case MESA_FORMAT_XRGB8888_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_RGB565:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_5_6_5;
|
||||
comp_swap = SWAP_STD_REV;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_RGB565_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_5_6_5;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_ARGB4444:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_4_4_4_4;
|
||||
comp_swap = SWAP_ALT;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_ARGB4444_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_4_4_4_4;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_ARGB1555:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_1_5_5_5;
|
||||
comp_swap = SWAP_ALT;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_ARGB1555_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_1_5_5_5;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_AL88:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_8_8;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_AL88_REV:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_8_8;
|
||||
comp_swap = SWAP_STD_REV;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -242,60 +281,90 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_RGBA_FLOAT32:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_32_32_32_32_FLOAT;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_RGBA_FLOAT16:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_16_16_16_16_FLOAT;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_ALPHA_FLOAT32:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_32_FLOAT;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_ALPHA_FLOAT16:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_16_FLOAT;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_LUMINANCE_FLOAT32:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_32_FLOAT;
|
||||
comp_swap = SWAP_ALT;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_LUMINANCE_FLOAT16:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_16_FLOAT;
|
||||
comp_swap = SWAP_ALT;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_32_32_FLOAT;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_16_16_FLOAT;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_32_FLOAT;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_FLOAT;
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_16_FLOAT;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -303,6 +372,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
break;
|
||||
case MESA_FORMAT_X8_Z24:
|
||||
case MESA_FORMAT_S8_Z24:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_24;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -313,6 +385,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_Z24_S8:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_24_8;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -323,6 +398,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_Z16:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_16;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -333,6 +411,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_Z32:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_32;
|
||||
comp_swap = SWAP_STD;
|
||||
number_type = NUMBER_UNORM;
|
||||
@@ -343,12 +424,18 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
source_format = 0;
|
||||
break;
|
||||
case MESA_FORMAT_SARGB8:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN32;
|
||||
#endif
|
||||
format = COLOR_8_8_8_8;
|
||||
comp_swap = SWAP_ALT;
|
||||
number_type = NUMBER_SRGB;
|
||||
source_format = 1;
|
||||
break;
|
||||
case MESA_FORMAT_SLA8:
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
endian = ENDIAN_8IN16;
|
||||
#endif
|
||||
format = COLOR_8_8;
|
||||
comp_swap = SWAP_ALT_REV;
|
||||
number_type = NUMBER_SRGB;
|
||||
@@ -366,6 +453,10 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo
|
||||
return;
|
||||
}
|
||||
|
||||
SETfield(cb_color0_info,
|
||||
endian,
|
||||
EG_CB_COLOR0_INFO__ENDIAN_shift,
|
||||
EG_CB_COLOR0_INFO__ENDIAN_mask);
|
||||
SETfield(cb_color0_info,
|
||||
format,
|
||||
EG_CB_COLOR0_INFO__FORMAT_shift,
|
||||
@@ -441,10 +532,10 @@ static inline void eg_load_shaders(struct gl_context * ctx)
|
||||
shader = context->blit_bo->ptr;
|
||||
|
||||
for(i=0; i<sizeof(evergreen_vs)/4; i++) {
|
||||
shader[128+i] = evergreen_vs[i];
|
||||
shader[128+i] = CPU_TO_LE32(evergreen_vs[i]);
|
||||
}
|
||||
for(i=0; i<sizeof(evergreen_ps)/4; i++) {
|
||||
shader[256+i] = evergreen_ps[i];
|
||||
shader[256+i] = CPU_TO_LE32(evergreen_ps[i]);
|
||||
}
|
||||
|
||||
radeon_bo_unmap(context->blit_bo);
|
||||
@@ -525,6 +616,7 @@ eg_set_vtx_resource(context_t *context)
|
||||
{
|
||||
struct radeon_bo *bo = context->blit_bo;
|
||||
uint32_t sq_vtx_constant_word3 = 0;
|
||||
uint32_t sq_vtx_constant_word2 = 0;
|
||||
BATCH_LOCALS(&context->radeon);
|
||||
|
||||
BEGIN_BATCH_NO_AUTOSTATE(6);
|
||||
@@ -555,13 +647,19 @@ eg_set_vtx_resource(context_t *context)
|
||||
EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_shift,
|
||||
EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_mask);
|
||||
|
||||
sq_vtx_constant_word2 = 0
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
| (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift)
|
||||
#endif
|
||||
| (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift);
|
||||
|
||||
BEGIN_BATCH_NO_AUTOSTATE(10 + 2);
|
||||
|
||||
R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 8));
|
||||
R600_OUT_BATCH(EG_SQ_FETCH_RESOURCE_VS_OFFSET * EG_FETCH_RESOURCE_STRIDE);
|
||||
R600_OUT_BATCH(0);
|
||||
R600_OUT_BATCH(48 - 1);
|
||||
R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift);
|
||||
R600_OUT_BATCH(sq_vtx_constant_word2);
|
||||
R600_OUT_BATCH(sq_vtx_constant_word3);
|
||||
R600_OUT_BATCH(0);
|
||||
R600_OUT_BATCH(0);
|
||||
|
||||
@@ -37,11 +37,19 @@ const uint32_t evergreen_vs[] =
|
||||
0x00000000,
|
||||
0x3c000000,
|
||||
0x67961001,
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
0x000a0000,
|
||||
#else
|
||||
0x00080000,
|
||||
#endif
|
||||
0x00000000,
|
||||
0x1c000000,
|
||||
0x67961000,
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
0x00020008,
|
||||
#else
|
||||
0x00000008,
|
||||
#endif
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
|
||||
@@ -307,6 +307,16 @@ static void evergreenSetupVTXConstants(struct gl_context * ctx,
|
||||
SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift,
|
||||
SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); // TODO : trace back api for initial data type, not only GL_FLOAT
|
||||
SETfield(uSQ_VTX_CONSTANT_WORD2_0, 0, BASE_ADDRESS_HI_shift, BASE_ADDRESS_HI_mask); // TODO
|
||||
|
||||
SETfield(uSQ_VTX_CONSTANT_WORD2_0,
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SQ_ENDIAN_8IN32,
|
||||
#else
|
||||
SQ_ENDIAN_NONE,
|
||||
#endif
|
||||
SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift,
|
||||
SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask);
|
||||
|
||||
if(GL_TRUE == pStreamDesc->normalize)
|
||||
{
|
||||
SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM,
|
||||
|
||||
@@ -180,6 +180,15 @@ static void evergreenRunRenderPrimitive(struct gl_context * ctx, int start, int
|
||||
SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask);
|
||||
}
|
||||
|
||||
/* 16-bit indexes are packed in a 32-bit value */
|
||||
SETfield(vgt_index_type,
|
||||
#if MESA_BIG_ENDIAN
|
||||
VGT_DMA_SWAP_32_BIT,
|
||||
#else
|
||||
VGT_DMA_SWAP_NONE,
|
||||
#endif
|
||||
SWAP_MODE_shift, SWAP_MODE_mask);
|
||||
|
||||
vgt_num_indices = num_indices;
|
||||
SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask);
|
||||
SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask);
|
||||
@@ -252,6 +261,15 @@ static void evergreenRunRenderPrimitiveImmediate(struct gl_context * ctx, int st
|
||||
SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask);
|
||||
}
|
||||
|
||||
/* 16-bit indexes are packed in a 32-bit value */
|
||||
SETfield(vgt_index_type,
|
||||
#if MESA_BIG_ENDIAN
|
||||
VGT_DMA_SWAP_32_BIT,
|
||||
#else
|
||||
VGT_DMA_SWAP_NONE,
|
||||
#endif
|
||||
SWAP_MODE_shift, SWAP_MODE_mask);
|
||||
|
||||
vgt_num_indices = num_indices;
|
||||
SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask);
|
||||
|
||||
|
||||
@@ -97,6 +97,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
@@ -105,6 +115,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) {
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED,
|
||||
FORMAT_COMP_X_shift, FORMAT_COMP_X_mask);
|
||||
@@ -122,6 +133,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -130,6 +151,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) {
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED,
|
||||
FORMAT_COMP_X_shift, FORMAT_COMP_X_mask);
|
||||
@@ -146,6 +168,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -154,12 +186,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_XRGB8888:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -168,26 +211,48 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_XRGB8888_REV:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_ARGB8888_REV:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
@@ -196,12 +261,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_RGB888:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -210,12 +286,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_RGB565:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -224,12 +311,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_RGB565_REV:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -238,12 +336,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_ARGB4444:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -252,12 +361,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_ARGB4444_REV:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
@@ -266,12 +386,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_ARGB1555:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
@@ -280,12 +411,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_ARGB1555_REV:
|
||||
SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift,
|
||||
EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask);
|
||||
|
||||
#ifdef MESA_BIG_ENDIAN
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#else
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z,
|
||||
@@ -294,6 +436,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask);
|
||||
SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X,
|
||||
SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask);
|
||||
#endif
|
||||
break;
|
||||
case MESA_FORMAT_AL88:
|
||||
case MESA_FORMAT_AL88_REV: /* TODO : Check this. */
|
||||
|
||||
Reference in New Issue
Block a user