Merge commit 'origin/gallium-master-merge'
[mesa.git] / src / gallium / drivers / i965simple / brw_wm_surface_state.c
index d16d919bce934bb2e79789ff99ac077389084fe8..1bab5bfdb3a9e5f5cf19f5bf6e6e8a3f726c48f0 100644 (file)
@@ -57,16 +57,16 @@ static unsigned translate_tex_target( enum pipe_texture_target target )
 static unsigned translate_tex_format( enum pipe_format pipe_format )
 {
    switch( pipe_format ) {
-   case PIPE_FORMAT_U_L8:
+   case PIPE_FORMAT_L8_UNORM:
       return BRW_SURFACEFORMAT_L8_UNORM;
 
-   case PIPE_FORMAT_U_I8:
+   case PIPE_FORMAT_I8_UNORM:
       return BRW_SURFACEFORMAT_I8_UNORM;
 
-   case PIPE_FORMAT_U_A8:
+   case PIPE_FORMAT_A8_UNORM:
       return BRW_SURFACEFORMAT_A8_UNORM;
 
-   case PIPE_FORMAT_U_A8_L8:
+   case PIPE_FORMAT_A8L8_UNORM:
       return BRW_SURFACEFORMAT_L8A8_UNORM;
 
    case PIPE_FORMAT_R8G8B8_UNORM:
@@ -160,7 +160,7 @@ void brw_update_texture_surface( struct brw_context *brw,
 
    surf.ss3.tile_walk = BRW_TILEWALK_XMAJOR;
    surf.ss3.tiled_surface = 0; /* always zero */
-   surf.ss3.pitch = tObj->pitch - 1;
+   surf.ss3.pitch = tObj->stride - 1;
    surf.ss3.depth = tObj->base.depth[0] - 1;
 
    surf.ss4.min_lod = 0;
@@ -193,24 +193,25 @@ static void upload_wm_surfaces(struct brw_context *brw )
       /* BRW_NEW_FRAMEBUFFER
        */
       struct pipe_surface *pipe_surface = brw->attribs.FrameBuffer.cbufs[0];/*fixme*/
+      struct brw_texture *tex = (struct brw_texture *)pipe_surface->texture;
 
       memset(&surf, 0, sizeof(surf));
 
       if (pipe_surface != NULL) {
-        if (pipe_surface->cpp == 4)
+        if (pipe_surface->block.size == 4)
            surf.ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
         else
            surf.ss0.surface_format = BRW_SURFACEFORMAT_B5G6R5_UNORM;
 
         surf.ss0.surface_type = BRW_SURFACE_2D;
 
-        surf.ss1.base_addr = brw_buffer_offset( brw, pipe_surface->buffer );
+        surf.ss1.base_addr = brw_buffer_offset( brw, tex->buffer );
 
         surf.ss2.width = pipe_surface->width - 1;
         surf.ss2.height = pipe_surface->height - 1;
         surf.ss3.tile_walk = BRW_TILEWALK_XMAJOR;
         surf.ss3.tiled_surface = 0;
-        surf.ss3.pitch = (pipe_surface->pitch * pipe_surface->cpp) - 1;
+        surf.ss3.pitch = pipe_surface->stride - 1;
       } else {
         surf.ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM;
         surf.ss0.surface_type = BRW_SURFACE_NULL;
@@ -237,7 +238,7 @@ static void upload_wm_surfaces(struct brw_context *brw )
 
    /* BRW_NEW_TEXTURE
     */
-   for (i = 0; i < BRW_MAX_TEX_UNIT; i++) {
+   for (i = 0; i < brw->num_textures && i < brw->num_samplers; i++) {
       const struct brw_texture *texUnit = brw->attribs.Texture[i];
 
       if (texUnit &&