Rev 2997 | Rev 5078 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2997 | Rev 3764 | ||
---|---|---|---|
Line 163... | Line 163... | ||
163 | case RADEON_CRTC_GUI_TRIG_VLINE: |
163 | case RADEON_CRTC_GUI_TRIG_VLINE: |
164 | r = r100_cs_packet_parse_vline(p); |
164 | r = r100_cs_packet_parse_vline(p); |
165 | if (r) { |
165 | if (r) { |
166 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
166 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
167 | idx, reg); |
167 | idx, reg); |
168 | r100_cs_dump_packet(p, pkt); |
168 | radeon_cs_dump_packet(p, pkt); |
169 | return r; |
169 | return r; |
170 | } |
170 | } |
171 | break; |
171 | break; |
172 | /* FIXME: only allow PACKET3 blit? easier to check for out of |
172 | /* FIXME: only allow PACKET3 blit? easier to check for out of |
173 | * range access */ |
173 | * range access */ |
Line 176... | Line 176... | ||
176 | r = r100_reloc_pitch_offset(p, pkt, idx, reg); |
176 | r = r100_reloc_pitch_offset(p, pkt, idx, reg); |
177 | if (r) |
177 | if (r) |
178 | return r; |
178 | return r; |
179 | break; |
179 | break; |
180 | case RADEON_RB3D_DEPTHOFFSET: |
180 | case RADEON_RB3D_DEPTHOFFSET: |
181 | r = r100_cs_packet_next_reloc(p, &reloc); |
181 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); |
182 | if (r) { |
182 | if (r) { |
183 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
183 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
184 | idx, reg); |
184 | idx, reg); |
185 | r100_cs_dump_packet(p, pkt); |
185 | radeon_cs_dump_packet(p, pkt); |
186 | return r; |
186 | return r; |
187 | } |
187 | } |
188 | track->zb.robj = reloc->robj; |
188 | track->zb.robj = reloc->robj; |
189 | track->zb.offset = idx_value; |
189 | track->zb.offset = idx_value; |
190 | track->zb_dirty = true; |
190 | track->zb_dirty = true; |
191 | ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset); |
191 | ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset); |
192 | break; |
192 | break; |
193 | case RADEON_RB3D_COLOROFFSET: |
193 | case RADEON_RB3D_COLOROFFSET: |
194 | r = r100_cs_packet_next_reloc(p, &reloc); |
194 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); |
195 | if (r) { |
195 | if (r) { |
196 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
196 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
197 | idx, reg); |
197 | idx, reg); |
198 | r100_cs_dump_packet(p, pkt); |
198 | radeon_cs_dump_packet(p, pkt); |
199 | return r; |
199 | return r; |
200 | } |
200 | } |
201 | track->cb[0].robj = reloc->robj; |
201 | track->cb[0].robj = reloc->robj; |
202 | track->cb[0].offset = idx_value; |
202 | track->cb[0].offset = idx_value; |
203 | track->cb_dirty = true; |
203 | track->cb_dirty = true; |
Line 208... | Line 208... | ||
208 | case R200_PP_TXOFFSET_2: |
208 | case R200_PP_TXOFFSET_2: |
209 | case R200_PP_TXOFFSET_3: |
209 | case R200_PP_TXOFFSET_3: |
210 | case R200_PP_TXOFFSET_4: |
210 | case R200_PP_TXOFFSET_4: |
211 | case R200_PP_TXOFFSET_5: |
211 | case R200_PP_TXOFFSET_5: |
212 | i = (reg - R200_PP_TXOFFSET_0) / 24; |
212 | i = (reg - R200_PP_TXOFFSET_0) / 24; |
213 | r = r100_cs_packet_next_reloc(p, &reloc); |
213 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); |
214 | if (r) { |
214 | if (r) { |
215 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
215 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
216 | idx, reg); |
216 | idx, reg); |
217 | r100_cs_dump_packet(p, pkt); |
217 | radeon_cs_dump_packet(p, pkt); |
218 | return r; |
218 | return r; |
219 | } |
219 | } |
220 | if (!(p->cs_flags & RADEON_CS_KEEP_TILING_FLAGS)) { |
220 | if (!(p->cs_flags & RADEON_CS_KEEP_TILING_FLAGS)) { |
221 | if (reloc->lobj.tiling_flags & RADEON_TILING_MACRO) |
221 | if (reloc->lobj.tiling_flags & RADEON_TILING_MACRO) |
222 | tile_flags |= R200_TXO_MACRO_TILE; |
222 | tile_flags |= R200_TXO_MACRO_TILE; |
Line 261... | Line 261... | ||
261 | case R200_PP_CUBIC_OFFSET_F3_5: |
261 | case R200_PP_CUBIC_OFFSET_F3_5: |
262 | case R200_PP_CUBIC_OFFSET_F4_5: |
262 | case R200_PP_CUBIC_OFFSET_F4_5: |
263 | case R200_PP_CUBIC_OFFSET_F5_5: |
263 | case R200_PP_CUBIC_OFFSET_F5_5: |
264 | i = (reg - R200_PP_TXOFFSET_0) / 24; |
264 | i = (reg - R200_PP_TXOFFSET_0) / 24; |
265 | face = (reg - ((i * 24) + R200_PP_TXOFFSET_0)) / 4; |
265 | face = (reg - ((i * 24) + R200_PP_TXOFFSET_0)) / 4; |
266 | r = r100_cs_packet_next_reloc(p, &reloc); |
266 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); |
267 | if (r) { |
267 | if (r) { |
268 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
268 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
269 | idx, reg); |
269 | idx, reg); |
270 | r100_cs_dump_packet(p, pkt); |
270 | radeon_cs_dump_packet(p, pkt); |
271 | return r; |
271 | return r; |
272 | } |
272 | } |
273 | track->textures[i].cube_info[face - 1].offset = idx_value; |
273 | track->textures[i].cube_info[face - 1].offset = idx_value; |
274 | ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset); |
274 | ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset); |
275 | track->textures[i].cube_info[face - 1].robj = reloc->robj; |
275 | track->textures[i].cube_info[face - 1].robj = reloc->robj; |
Line 279... | Line 279... | ||
279 | track->maxy = ((idx_value >> 16) & 0x7FF); |
279 | track->maxy = ((idx_value >> 16) & 0x7FF); |
280 | track->cb_dirty = true; |
280 | track->cb_dirty = true; |
281 | track->zb_dirty = true; |
281 | track->zb_dirty = true; |
282 | break; |
282 | break; |
283 | case RADEON_RB3D_COLORPITCH: |
283 | case RADEON_RB3D_COLORPITCH: |
284 | r = r100_cs_packet_next_reloc(p, &reloc); |
284 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); |
285 | if (r) { |
285 | if (r) { |
286 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
286 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
287 | idx, reg); |
287 | idx, reg); |
288 | r100_cs_dump_packet(p, pkt); |
288 | radeon_cs_dump_packet(p, pkt); |
289 | return r; |
289 | return r; |
290 | } |
290 | } |
Line 291... | Line 291... | ||
291 | 291 | ||
292 | if (!(p->cs_flags & RADEON_CS_KEEP_TILING_FLAGS)) { |
292 | if (!(p->cs_flags & RADEON_CS_KEEP_TILING_FLAGS)) { |
Line 356... | Line 356... | ||
356 | break; |
356 | break; |
357 | } |
357 | } |
358 | track->zb_dirty = true; |
358 | track->zb_dirty = true; |
359 | break; |
359 | break; |
360 | case RADEON_RB3D_ZPASS_ADDR: |
360 | case RADEON_RB3D_ZPASS_ADDR: |
361 | r = r100_cs_packet_next_reloc(p, &reloc); |
361 | r = radeon_cs_packet_next_reloc(p, &reloc, 0); |
362 | if (r) { |
362 | if (r) { |
363 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
363 | DRM_ERROR("No reloc for ib[%d]=0x%04X\n", |
364 | idx, reg); |
364 | idx, reg); |
365 | r100_cs_dump_packet(p, pkt); |
365 | radeon_cs_dump_packet(p, pkt); |
366 | return r; |
366 | return r; |
367 | } |
367 | } |
368 | ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset); |
368 | ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset); |
369 | break; |
369 | break; |
370 | case RADEON_PP_CNTL: |
370 | case RADEON_PP_CNTL: |