| @@ -269,14 +269,12 @@ static void r600SetTexFilter(radeonTexObjPtr t, GLenum minf, GLenum magf, GLfloa | |||
| static void r600SetTexBorderColor(radeonTexObjPtr t, const GLfloat color[4]) | |||
| { | |||
| #if 0 | |||
| GLubyte c[4]; | |||
| CLAMPED_FLOAT_TO_UBYTE(c[0], color[0]); | |||
| CLAMPED_FLOAT_TO_UBYTE(c[1], color[1]); | |||
| CLAMPED_FLOAT_TO_UBYTE(c[2], color[2]); | |||
| CLAMPED_FLOAT_TO_UBYTE(c[3], color[3]); | |||
| t->pp_border_color = PACK_COLOR_8888(c[3], c[0], c[1], c[2]); | |||
| #endif | |||
| t->TD_PS_SAMPLER0_BORDER_ALPHA = *((uint32_t*)&(color[3])); | |||
| t->TD_PS_SAMPLER0_BORDER_RED = *((uint32_t*)&(color[2])); | |||
| t->TD_PS_SAMPLER0_BORDER_GREEN = *((uint32_t*)&(color[1])); | |||
| t->TD_PS_SAMPLER0_BORDER_BLUE = *((uint32_t*)&(color[0])); | |||
| SETfield(t->SQ_TEX_SAMPLER0, SQ_TEX_BORDER_COLOR_REGISTER, | |||
| BORDER_COLOR_TYPE_shift, BORDER_COLOR_TYPE_mask); | |||
| } | |||
| /** | |||
| @@ -187,6 +187,15 @@ GLboolean r700SendTextureState(context_t *context) | |||
| R600_OUT_BATCH(r700->textures[i]->SQ_TEX_SAMPLER1); | |||
| R600_OUT_BATCH(r700->textures[i]->SQ_TEX_SAMPLER2); | |||
| END_BATCH(); | |||
| BEGIN_BATCH_NO_AUTOSTATE(2 + 4); | |||
| R600_OUT_BATCH_REGSEQ((TD_PS_SAMPLER0_BORDER_RED + (i * 16)), 4); | |||
| R600_OUT_BATCH(r700->textures[i]->TD_PS_SAMPLER0_BORDER_RED); | |||
| R600_OUT_BATCH(r700->textures[i]->TD_PS_SAMPLER0_BORDER_GREEN); | |||
| R600_OUT_BATCH(r700->textures[i]->TD_PS_SAMPLER0_BORDER_BLUE); | |||
| R600_OUT_BATCH(r700->textures[i]->TD_PS_SAMPLER0_BORDER_ALPHA); | |||
| END_BATCH(); | |||
| COMMIT_BATCH(); | |||
| } | |||
| } | |||
| @@ -239,6 +239,11 @@ struct radeon_tex_obj { | |||
| GLuint SQ_TEX_SAMPLER1; | |||
| GLuint SQ_TEX_SAMPLER2; | |||
| GLuint TD_PS_SAMPLER0_BORDER_RED; | |||
| GLuint TD_PS_SAMPLER0_BORDER_GREEN; | |||
| GLuint TD_PS_SAMPLER0_BORDER_BLUE; | |||
| GLuint TD_PS_SAMPLER0_BORDER_ALPHA; | |||
| GLboolean border_fallback; | |||