swr: fix polygonmode for front==back
[mesa.git] / src / gallium / drivers / swr / swr_resource.h
index 2fdc7683cb82a9ff2961b12c766b86598a18ee87..ae9954c1e7da1053789fa4e885ce08598b2334ac 100644 (file)
@@ -41,22 +41,19 @@ struct swr_resource {
    bool has_depth;
    bool has_stencil;
 
-   UINT alignedWidth;
-   UINT alignedHeight;
-
    SWR_SURFACE_STATE swr;
    SWR_SURFACE_STATE secondary; /* for faking depth/stencil merged formats */
 
    struct sw_displaytarget *display_target;
 
-   unsigned row_stride[PIPE_MAX_TEXTURE_LEVELS];
-   unsigned img_stride[PIPE_MAX_TEXTURE_LEVELS];
-   unsigned mip_offsets[PIPE_MAX_TEXTURE_LEVELS];
+   /* If resource is multisample, then this points to a alternate resource
+    * containing the resolved multisample surface, otherwise null */
+   struct pipe_resource *resolve_target;
 
-   enum swr_resource_status status;
+   size_t mip_offsets[PIPE_MAX_TEXTURE_LEVELS];
+   size_t secondary_mip_offsets[PIPE_MAX_TEXTURE_LEVELS];
 
-   /* pipe_context to which resource is currently bound. */
-   struct pipe_context *bound_to_context;
+   enum swr_resource_status status;
 };
 
 
@@ -88,7 +85,7 @@ swr_resource_is_texture(const struct pipe_resource *resource)
 }
 
 
-static INLINE void *
+static INLINE uint8_t *
 swr_resource_data(struct pipe_resource *resource)
 {
    struct swr_resource *swr_r = swr_resource(resource);
@@ -120,24 +117,21 @@ swr_resource_status & operator|=(enum swr_resource_status & a,
 }
 
 static INLINE void
-swr_resource_read(struct pipe_context *pipe, struct swr_resource *resource)
+swr_resource_read(struct pipe_resource *resource)
 {
-   resource->status |= SWR_RESOURCE_READ;
-   resource->bound_to_context = pipe;
+   swr_resource(resource)->status |= SWR_RESOURCE_READ;
 }
 
 static INLINE void
-swr_resource_write(struct pipe_context *pipe, struct swr_resource *resource)
+swr_resource_write(struct pipe_resource *resource)
 {
-   resource->status |= SWR_RESOURCE_WRITE;
-   resource->bound_to_context = pipe;
+   swr_resource(resource)->status |= SWR_RESOURCE_WRITE;
 }
 
 static INLINE void
-swr_resource_unused(struct pipe_context *pipe, struct swr_resource *resource)
+swr_resource_unused(struct pipe_resource *resource)
 {
-   resource->status = SWR_RESOURCE_UNUSED;
-   resource->bound_to_context = nullptr;
+   swr_resource(resource)->status = SWR_RESOURCE_UNUSED;
 }
 
 #endif