swr/rasterizer: improvements in simdlib
[mesa.git] / src / gallium / drivers / swr / swr_resource.h
index ae9954c1e7da1053789fa4e885ce08598b2334ac..2228dff74887d5d599d1e0bee5bdc65d57a4b7e3 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef SWR_RESOURCE_H
 #define SWR_RESOURCE_H
 
+#include "memory/SurfaceState.h"
 #include "pipe/p_state.h"
 #include "api.h"
 
@@ -54,6 +55,9 @@ struct swr_resource {
    size_t secondary_mip_offsets[PIPE_MAX_TEXTURE_LEVELS];
 
    enum swr_resource_status status;
+
+   /* last pipe that used (validated) this resource */
+   struct pipe_context *curr_pipe;
 };
 
 
@@ -63,12 +67,12 @@ swr_resource(struct pipe_resource *resource)
    return (struct swr_resource *)resource;
 }
 
-static INLINE boolean
+static INLINE bool
 swr_resource_is_texture(const struct pipe_resource *resource)
 {
    switch (resource->target) {
    case PIPE_BUFFER:
-      return FALSE;
+      return false;
    case PIPE_TEXTURE_1D:
    case PIPE_TEXTURE_1D_ARRAY:
    case PIPE_TEXTURE_2D:
@@ -77,10 +81,10 @@ swr_resource_is_texture(const struct pipe_resource *resource)
    case PIPE_TEXTURE_3D:
    case PIPE_TEXTURE_CUBE:
    case PIPE_TEXTURE_CUBE_ARRAY:
-      return TRUE;
+      return true;
    default:
       assert(0);
-      return FALSE;
+      return false;
    }
 }
 
@@ -92,10 +96,14 @@ swr_resource_data(struct pipe_resource *resource)
 
    assert(!swr_resource_is_texture(resource));
 
-   return swr_r->swr.pBaseAddress;
+   return (uint8_t*)(swr_r->swr.xpBaseAddress);
 }
 
 
+void swr_invalidate_render_target(struct pipe_context *pipe,
+                                  uint32_t attachment,
+                                  uint16_t width, uint16_t height);
+
 void swr_store_render_target(struct pipe_context *pipe,
                              uint32_t attachment,
                              enum SWR_TILE_STATE post_tile_state);