Loading drivers/char/drm/via_drv.h +2 −2 Original line number Diff line number Diff line Loading @@ -29,10 +29,10 @@ #define DRIVER_NAME "via" #define DRIVER_DESC "VIA Unichrome / Pro" #define DRIVER_DATE "20060529" #define DRIVER_DATE "20061227" #define DRIVER_MAJOR 2 #define DRIVER_MINOR 10 #define DRIVER_MINOR 11 #define DRIVER_PATCHLEVEL 0 #include "via_verifier.h" Loading drivers/char/drm/via_verifier.c +21 −9 Original line number Diff line number Diff line Loading @@ -306,6 +306,7 @@ static __inline__ int finish_current_sequence(drm_via_state_t * cur_seq) unsigned long lo = ~0, hi = 0, tmp; uint32_t *addr, *pitch, *height, tex; unsigned i; int npot; if (end > 9) end = 9; Loading @@ -316,11 +317,14 @@ static __inline__ int finish_current_sequence(drm_via_state_t * cur_seq) &(cur_seq->t_addr[tex = cur_seq->texture][start]); pitch = &(cur_seq->pitch[tex][start]); height = &(cur_seq->height[tex][start]); npot = cur_seq->tex_npot[tex]; for (i = start; i <= end; ++i) { tmp = *addr++; if (tmp < lo) lo = tmp; if (i == 0 && npot) tmp += (*height++ * *pitch++); else tmp += (*height++ << *pitch++); if (tmp > hi) hi = tmp; Loading Loading @@ -443,14 +447,22 @@ investigate_hazard(uint32_t cmd, hazard_t hz, drm_via_state_t * cur_seq) return 0; case check_texture_addr3: cur_seq->unfinished = tex_address; tmp = ((cmd >> 24) - 0x2B); tmp = ((cmd >> 24) - HC_SubA_HTXnL0Pit); if (tmp == 0 && (cmd & HC_HTXnEnPit_MASK)) { cur_seq->pitch[cur_seq->texture][tmp] = (cmd & HC_HTXnLnPit_MASK); cur_seq->tex_npot[cur_seq->texture] = 1; } else { cur_seq->pitch[cur_seq->texture][tmp] = (cmd & 0x00F00000) >> 20; if (!tmp && (cmd & 0x000FFFFF)) { (cmd & HC_HTXnLnPitE_MASK) >> HC_HTXnLnPitE_SHIFT; cur_seq->tex_npot[cur_seq->texture] = 0; if (cmd & 0x000FFFFF) { DRM_ERROR ("Unimplemented texture level 0 pitch mode.\n"); return 2; } } return 0; case check_texture_addr4: cur_seq->unfinished = tex_address; Loading drivers/char/drm/via_verifier.h +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ typedef struct { uint32_t tex_level_lo[2]; uint32_t tex_level_hi[2]; uint32_t tex_palette_size[2]; uint32_t tex_npot[2]; drm_via_sequence_t unfinished; int agp_texture; int multitex; Loading Loading
drivers/char/drm/via_drv.h +2 −2 Original line number Diff line number Diff line Loading @@ -29,10 +29,10 @@ #define DRIVER_NAME "via" #define DRIVER_DESC "VIA Unichrome / Pro" #define DRIVER_DATE "20060529" #define DRIVER_DATE "20061227" #define DRIVER_MAJOR 2 #define DRIVER_MINOR 10 #define DRIVER_MINOR 11 #define DRIVER_PATCHLEVEL 0 #include "via_verifier.h" Loading
drivers/char/drm/via_verifier.c +21 −9 Original line number Diff line number Diff line Loading @@ -306,6 +306,7 @@ static __inline__ int finish_current_sequence(drm_via_state_t * cur_seq) unsigned long lo = ~0, hi = 0, tmp; uint32_t *addr, *pitch, *height, tex; unsigned i; int npot; if (end > 9) end = 9; Loading @@ -316,11 +317,14 @@ static __inline__ int finish_current_sequence(drm_via_state_t * cur_seq) &(cur_seq->t_addr[tex = cur_seq->texture][start]); pitch = &(cur_seq->pitch[tex][start]); height = &(cur_seq->height[tex][start]); npot = cur_seq->tex_npot[tex]; for (i = start; i <= end; ++i) { tmp = *addr++; if (tmp < lo) lo = tmp; if (i == 0 && npot) tmp += (*height++ * *pitch++); else tmp += (*height++ << *pitch++); if (tmp > hi) hi = tmp; Loading Loading @@ -443,14 +447,22 @@ investigate_hazard(uint32_t cmd, hazard_t hz, drm_via_state_t * cur_seq) return 0; case check_texture_addr3: cur_seq->unfinished = tex_address; tmp = ((cmd >> 24) - 0x2B); tmp = ((cmd >> 24) - HC_SubA_HTXnL0Pit); if (tmp == 0 && (cmd & HC_HTXnEnPit_MASK)) { cur_seq->pitch[cur_seq->texture][tmp] = (cmd & HC_HTXnLnPit_MASK); cur_seq->tex_npot[cur_seq->texture] = 1; } else { cur_seq->pitch[cur_seq->texture][tmp] = (cmd & 0x00F00000) >> 20; if (!tmp && (cmd & 0x000FFFFF)) { (cmd & HC_HTXnLnPitE_MASK) >> HC_HTXnLnPitE_SHIFT; cur_seq->tex_npot[cur_seq->texture] = 0; if (cmd & 0x000FFFFF) { DRM_ERROR ("Unimplemented texture level 0 pitch mode.\n"); return 2; } } return 0; case check_texture_addr4: cur_seq->unfinished = tex_address; Loading
drivers/char/drm/via_verifier.h +1 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ typedef struct { uint32_t tex_level_lo[2]; uint32_t tex_level_hi[2]; uint32_t tex_palette_size[2]; uint32_t tex_npot[2]; drm_via_sequence_t unfinished; int agp_texture; int multitex; Loading